在表单视图中的转发器中从代码隐藏设置下拉列表中选择的值
问题描述:
因此情况如此。 我在窗体视图内的中继器中有一个下拉列表。在表单视图中的转发器中从代码隐藏设置下拉列表中选择的值
真正特别的部分是中继器正在被用来动态添加多行数据。
我一直在试图做的和失败的是设置下拉选定的值。
<asp:FormView ID="FormView3" runat="server" DataKeyNames="t_id"
DataSourceID="SqlDataSource25" DefaultMode="Insert">
<InsertItemTemplate>
t_p_id:
<asp:TextBox ID="t_p_idTextBox" runat="server" Text='<%# Bind("t_p_id") %>' />
<br />
t_step:
<asp:TextBox ID="t_stepTextBox" runat="server" Text='<%# Bind("t_step") %>' />
<br />
t_foreclosure_date:
<asp:TextBox ID="t_foreclosure_dateTextBox" runat="server"
Text='<%# Bind("t_foreclosure_date") %>' />
<br />
t_date:
<asp:TextBox ID="t_dateTextBox" runat="server" Text='<%# Bind("t_date") %>' />
<br />
<hr />
<asp:Repeater ID="repeater1" runat="server" OnPreRender="repeater1_PreRender" OnItemCommand="repeater1_ItemCommand" >
<HeaderTemplate>
<table cellpadding="5" cellspacing="5">
<tr style="padding-top: 5px;">
<td colspan="7">
<asp:Label ID="lblInstructions" runat="server" Text="Add entries here:" />
</td>
</tr>
<tr runat="server" id="trHeader" style="font-weight: bold;">
<td>Date</td>
<td>Cost</td>
<td>Type</td>
<td>Comment</td>
<td></td>
<td></td>
<td></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:TextBox ID="txtDate" runat="server" Width="55"
Text='<%#DataBinder.Eval(Container.DataItem, "date", "{0:d}")%>' /> </td>
<td><asp:TextBox ID="txtAmount" runat="server" Width="55"
Text='<%#DataBinder.Eval(Container.DataItem, "amount")%>' /> </td>
<td>
<asp:DropDownList ID="ddlType" runat="server" DataSourceID="SqlDataSource26"
DataTextField="tt_type" DataValueField="tt_id" ></asp:DropDownList>
</td>
<td><asp:TextBox ID="txtComment" runat="server" Width="300"
Text='<%#DataBinder.Eval(Container.DataItem, "comment")%>' /> </td>
<td style="text-align: center;">
<asp:Button ID="btnMoveUp" runat="server" Width="70"
Text="Move Up" CommandName="Up"
CommandArgument='<%# Container.ItemIndex %>' />
</td>
<td style="text-align: center;">
<asp:Button ID="btnMoveDown" runat="server" Width="90"
Text="Move Down" CommandName="Down"
CommandArgument='<%# Container.ItemIndex + 1 %>' />
</td>
<td style="text-align: center;">
<asp:Button ID="btnRemove" runat="server" Width="70"
Text="Remove" CommandName="Remove"
CommandArgument='<%# Container.ItemIndex %>' />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr style="padding-top: 5px;">
<td colspan="6">
<asp:Button ID="btnAdd" runat="server"
Text="Add Row" CommandName="Add" />
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
<hr />
<asp:CheckBoxList ID="tpTransmittalsDoclist" runat="server" DataSourceID="SqlDataSource13"
DataTextField="document_name" DataValueField="document_id">
</asp:CheckBoxList>
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"
CommandName="Insert" Text="Insert" />
<asp:LinkButton ID="InsertCancelButton" runat="server"
CausesValidation="False" CommandName="Cancel" Text="Cancel" />
</InsertItemTemplate>
</asp:FormView>
当代码中的页面加载后,我在第一个中继行中插入虚拟值。我正在使用类费用设置/存储中继器行的值。但我不知道如何设置下拉列表中选中的数据绑定中继器时的值。我尝试了一些不同的东西,但没有喜悦。有什么想法吗?
// load up costs in transmittals tab
if (!Page.IsPostBack)
{
Costs mycost = new Costs();
string date = DateTime.Now.ToShortDateString();
Costs.Cost cost1 = new Costs.Cost(date, "1.99", 2, "1");
mycost.Add(cost1);
Repeater r = FormView3.FindControl("repeater1") as Repeater;
r.DataSource = mycost;
r.DataBind();
}
编辑:如果您使用的是整数。你会想要使用。
SelectedIndex='<%#DataBinder.Eval(Container.DataItem, "type")%>'
答
你可以下拉的SelectedValue属性绑定在你的标记网页即
<asp:DropDownList ID="ddlType" runat="server" DataSourceID="SqlDataSource26"
DataTextField="tt_type" DataValueField="tt_id"
SelectedValue='<%# Eval("ColumnName")%>'>
</asp:DropDownList>
希望,这将解决您的问题。
答
如果该值不能被设置INT来drodownlist标签像...
SelectedValue='<%# Eval("ColumnWithValue")%>'
...那么你需要OnItemDataBound
基本工作:
在转发标签,添加此属性:
OnItemDataBound="FormatRepeaterRow"
在页面代码隐藏:
protected void FormatRepeaterRow(Object sender, RepeaterItemEventArgs e)
{
if((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
((DropDownList)e.Item.FindControl("ddlType")).SelectedValue = "a_value";
}
}
最好的解决方案有时候是最简单的。 Dangit我正在寻找类似的东西,但我找不到它。 尤达曼! – Prescient 2012-08-10 18:49:00
SelectedIndex ='' 当处理整数 – Prescient 2012-08-20 13:52:58