这看起来应该很简单,但我感到难以置信。我已经完成了listview的所有设置并绑定到了我的LINQ数据源。源依赖于一个下拉列表,该列表决定在列表视图中显示哪个分支信息。我的编辑模板工作得很好,但我的插入模板不起作用,因为它需要我想从列表视图外的下拉列表中获得的分支ID,但我不知道如何绑定该值并在模板中设置它。它看起来像这样:
<InsertItemTemplate>
<tr style="">
<td>
<asp:Button ID="InsertButton" runat="server" CommandName="Insert"
Text="Insert" />
</td>
<td>
<asp:TextBox ID="RechargeRateTextBox" runat="server"
Text='<%# Bind("RechargeRate") %>' />
</td>
<td>
<asp:Calendar SelectedDate='<%# Bind("StartDate") %>' ID="Calendar1" runat="server"></asp:Calendar>
</td>
</tr>
</InsertItemTemplate>
我需要在那里获得一个标签,它绑定到listview之外的数据绑定的asp dropdownlist的值,这样插入就可以工作了。
使用DropDownList的OnSelectedIndexChanged(带有AutoPostBack=True)回调可以在DropDown列表的值更改时手动将ListView中的值设置为该分支的默认值。
protected void BranchDropDownList_OnSelectedIndexChanged( object sender, EventArgs e )
{
DropDownList ddl = (DropDownList)sender;
RechargeRateTextBox.Text = BranchManager.GetRechargeRate( ddl.SelectedValue );
}
将整个事情封装在UpdatePanel中,这一切都可以通过AJAX实现。
我最终选择了这个,谢谢twinfosson。
protected void ListView1_ItemInserting(object sender, System.Web.UI.WebControls.ListViewInsertEventArgs e)
{
e.Values["BranchID"] = DropDownList1.SelectedValue;
}