我在这里遗漏了一些东西......
我需要访问离开editmode的项目上的控件值,从而触发ItemUpdating。
我找到了如何获取密钥值,因此我知道数据库中的哪条记录需要更新。问题是我似乎无法访问编辑行上控件的值。
EditTemplate包含一些复选框,一个下拉列表和文本框。我需要访问这些值,以便我可以更新记录。
在查看事件时,没有任何显示。
我认为我忽略了一些至关重要的事情,任何帮助都会很方便。
答案 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传递给编辑项目中的任何控件,并且不要忘记演员。
希望这有帮助