前几天在遇到这么个情况:当GridView处于浏览状态的时候,该列显示结果,当点击编辑的时候,该列变为可以选择的RadioButtonList列,从网上查了许多资料,也问了下朋友,特在这总结下我的心得。
前台页面代码:
<
asp:TemplateField
HeaderText
="是否公开"
ItemStyle-Width
="100"
>
< ItemTemplate >< asp:Label ID ="Label_visible" runat ="server" Text ='<%# Bind("visible") % > '> </ asp:Label ></ ItemTemplate >
< EditItemTemplate >< asp:RadioButtonList ID ="RadioButtonList_visible" runat ="server" RepeatDirection ="Horizontal" >< asp:ListItem Text ="是" Value ="是" ></ asp:ListItem >< asp:ListItem Text ="否" Value ="否" ></ asp:ListItem ></ asp:RadioButtonList ></ EditItemTemplate >
</ asp:TemplateField >
< ItemTemplate >< asp:Label ID ="Label_visible" runat ="server" Text ='<%# Bind("visible") % > '> </ asp:Label ></ ItemTemplate >
< EditItemTemplate >< asp:RadioButtonList ID ="RadioButtonList_visible" runat ="server" RepeatDirection ="Horizontal" >< asp:ListItem Text ="是" Value ="是" ></ asp:ListItem >< asp:ListItem Text ="否" Value ="否" ></ asp:ListItem ></ asp:RadioButtonList ></ EditItemTemplate >
</ asp:TemplateField >
RowDataBound事件如下:
protected
void
GridView1_RowDataBound(
object
sender, GridViewRowEventArgs e)
... {
if ((RadioButtonList)e.Row.Cells[1].FindControl("RadioButtonList_visible") != null)
...{
//我的例子中第二列放RadioButtonList
RadioButtonList list = (RadioButtonList)e.Row.Cells[1].FindControl("RadioButtonList_visible");
//默认选项放在ViewState中,也可以用其他方式提供它的默认项
if (ViewState["visible"] != null)
...{
list.SelectedValue = ViewState["visible"].ToString();
}
}
}
... {
if ((RadioButtonList)e.Row.Cells[1].FindControl("RadioButtonList_visible") != null)
...{
//我的例子中第二列放RadioButtonList
RadioButtonList list = (RadioButtonList)e.Row.Cells[1].FindControl("RadioButtonList_visible");
//默认选项放在ViewState中,也可以用其他方式提供它的默认项
if (ViewState["visible"] != null)
...{
list.SelectedValue = ViewState["visible"].ToString();
}
}
}