我正在使用Gridview模板字段,我想检查
如果Session已设置,则从Session中检索RegionID并将其存储在隐藏字段中, 其他 显示包含所有区域的下拉框。 示例代码。
<asp:TemplateField HeaderText="Region">
<ItemTemplate>
<% if(Session["REGION"]!=null) %>
<asp:TextBox ID="txtRegion" value=<%Session["REGION"]% />
<% else %>
<asp:DropDownList ID="txtRegion" />
</ItemTemplate>
我应该如何做到这一点。
任何想法。
答案 0 :(得分:0)
在<ItemTemplate>
:
<asp:TemplateField HeaderText="Region">
<ItemTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server">
</ItemTemplate>
</asp:TemplateField>
然后在GridView RowDataBound事件后面的代码中:
if( e.Row.RowType == DataRow ){
PlaceHolder PlaceHolder1 = (PlaceHolder) e.Row.FindControl("PlaceHolder1");
Control tmpCtrl = null;
if(Session["REGION"] != null) {
tmpCtrl = new HiddenField();
((HiddenField) tmpCtrl).Value = (string) Session["REGION"];
}
else {
tmpCtrl = new DropDownList();
// To be determined
// ( ( DropDownList ) tmpCtrl ).DataTextField = "";
// ( ( DropDownList ) tmpCtrl ).DataValueField = "";
// ( ( DropDownList ) tmpCtrl ).DataSource = ;
// ( ( DropDownList ) tmpCtrl ).DataBind();
}
tmpCtrl.ID = "txtRegion";
PlaceHolder1.Controls.Add( tmpCtrl );
}
动态下拉列表如果生成,仍然需要绑定到您的区域列表。只有您知道该列表所在的位置。但是,您可以在实例化并在DataTextField
上面添加DataValueField
和else
名称后立即绑定