在ItemUpdating事件中的ASP.net ListView Access控件

时间:2009-07-23 12:32:37

标签: c# asp.net listview

我在这里遗漏了一些东西......

我需要访问离开editmode的项目上的控件值,从而触发ItemUpdating。

我找到了如何获取密钥值,因此我知道数据库中的哪条记录需要更新。问题是我似乎无法访问编辑行上控件的值。

EditTemplate包含一些复选框,一个下拉列表和文本框。我需要访问这些值,以便我可以更新记录。

在查看事件时,没有任何显示。

我认为我忽略了一些至关重要的事情,任何帮助都会很方便。

2 个答案:

答案 0 :(得分:2)

您还可以使用“ListView.EditItem.FindControl(”X“)”直接访问控件。

Protected Sub ListView_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewUpdateEventArgs) Handles ListView.ItemUpdating

        Dim DropDownListddl As DropDownList = ListView.EditItem.FindControl("DropDownListddl")

        Lblwarning.Text = DropDownListddl.SelectedValue
End Sub

答案 1 :(得分:0)

我可以通过两种方式来做到这一点。

第一种方法是使用支持更新命令的数据源,并使用双向绑定来更新值。以下snipped使用双向绑定来填充名称和学生字段,它也将为您更新它们。

<EditItemTemplate>
            <tr style="background-color: #FFCC66;color: #000080;">
                <td>
                    <asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
                        Text="Update" />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                        Text="Cancel" />

                </td>
                <td>
                    <asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' />
                </td>
                <td>
                    <asp:TextBox ID="studentTextBox" runat="server" Text='<%# Bind("student") %>' />
                </td>
            </tr>
        </EditItemTemplate>

如果您没有使用支持此功能的数据源,则可以执行另外一项操作。 请注意更新按钮如何具有名为“更新”的命令。您可以使用它来通过处理列表视图ItemCommand Event来获取所需的控件值。

protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        if (e.CommandName == "Update")
        {
            TextBox box = (TextBox)e.Item.FindControl("nameTextBox");

            string name = box.Text;
        }
    }

您可以通过简单地调用find控件并将控件的ID传递给编辑项目中的任何控件,并且不要忘记演员。

希望这有帮助