ListView с шаблоном вставки источника данных LINQ
Вопрос
Кажется, это должно быть просто, но я ошеломляю. У меня все настройки просмотра списка и привязаны к источнику данных LINQ. Источник зависит от раскрывающегося списка, который решает, какую информацию о ветвях отображать в представлении списка. Мой шаблон редактирования работает нормально, но мой шаблон вставки не будет работать, потому что ему нужен идентификатор ветви, который я хочу получить из выпадающего списка за пределами списка, но я не знаю, как связать это значение и установить его в моем шаблоне. Это выглядит так:
<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>
Мне нужно добавить туда метку, которая привязывается к значению выпадающего списка asp с привязкой к данным за пределами списка, чтобы вставка работала.
Решение 2
Я закончил с этим, спасибо twanfosson.
protected void ListView1_ItemInserting(object sender, System.Web.UI.WebControls.ListViewInsertEventArgs e)
{
e.Values["BranchID"] = DropDownList1.SelectedValue;
}
Другие советы
Используйте функцию обратного вызова OnSelectedIndexChanged (с AutoPostBack = True) для DropDownList, чтобы вручную установить значения в ListView в значения по умолчанию для этой ветви при изменении значения DropDownList.
protected void BranchDropDownList_OnSelectedIndexChanged( object sender, EventArgs e )
{
DropDownList ddl = (DropDownList)sender;
RechargeRateTextBox.Text = BranchManager.GetRechargeRate( ddl.SelectedValue );
}
Оберните все это в UpdatePanel, и все это может произойти через AJAX.