DataGrid实现单选功能,将DataGrid绑定的单选钮放在一个组里
时间:2011-01-15 来源:无限循环
第一种方法使用Radio标签来实现
模板列使用html控件Radio标签来绑定
HTML代码 <asp:TemplateColumn HeaderText="是否列表显示"><ItemTemplate>
<input id="radIsListShow" name="Attribute2" type="radio" value='<%# DataBinder.Eval(Container, "DataItem.SysNo") %>' /><%# DataBinder.Eval(Container, "DataItem.Attribute2Name") %>
</ItemTemplate>
</asp:TemplateColumn>
后台获取选择的值代码
int iSelectSysNo = AppConst.IntNull;//被选中的属性系统编号
//判断是否列表显示是否单选
if (Request.Form["Attribute2"] != null)
{
iSelectSysNo = int.Parse(Request.Form["Attribute2"]);
}
//处理代码....
效果图:
第二种方法使用RadioButtonList实现
建议使用第一种方法,第二种方法在做样式上处理会比较麻烦,效果图有显示
html代码 <asp:TemplateColumn HeaderText="是否列表显示"><ItemTemplate>
<asp:RadioButtonList ID="radIsListShow" runat="server" Width="100%"/>
</ItemTemplate>
<ItemStyle Width="120px" />
</asp:TemplateColumn>
DataBind之后增加代码
DataBind增加代码 #region 是否列表显示单选列功能
//将datagrid的第一列设置为模板列,并加入RadioButtonList
//将第一列第一单元格的RowSpan设置为DataGrid的总列数
gridOption.Items[0].Cells[0].RowSpan = gridOption.Items.Count;
for (int i = 1; i < gridOption.Items.Count; ++i)
{
//从第二列开始隐藏第一个单元格
gridOption.Items[i].Cells[0].Visible = false;
}
//将第一列第一个单元格里的RadioButtonList按照DataGrid的总列数进行列添加
for (int i = 0; i < gridOption.Items.Count; ++i)
{
Label lblSysNo = gridOption.Items[i].FindControl("lblSysNo") as Label;
Label lblName = gridOption.Items[i].FindControl("lblName") as Label;
ListItem ss = new ListItem(lblName.Text, lblSysNo.Text);
((RadioButtonList)gridOption.Items[0].Cells[0].Controls[1]).Items.Add(ss);
}
#endregion
获取选中的值代码
int iSelectSysNo = AppConst.IntNull;//被选中的属性系统编号
foreach (ListItem item in radIsListShow.Items)
{
if (item.Selected)
{
iSelectSysNo = int.Parse(item.Text);
}
}
效果图:当前鼠标是在第一行,第一样颜色有变,但是否列表显示这一列都变色了,因为它都是第一行中的控件。
相关阅读 更多 +