如何在DataGrid控件中其中一列中的每行绑定RadioButton控件,实现该列上只能有一行的RadioButton处于被选中状态 跪谢大侠们! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用模版列 添加RadioButton控件<asp:DataGrid id="DataGrid1" runat="server"> <Columns> <asp:TemplateColumn HeaderText="select"> <ItemTemplate> <asp:RadioButton id="RadioButton1" runat="server" GroupName="slt" Text="select"></asp:RadioButton> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid> 是这样,在DataGrid中加入模板列,然后在模板列中加入Radio(一定要是Html控件)命名为Rediobtn. 然后在Page_load中加入如下代码private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(!this.IsPostBack) { this.SetRadioBtnCheck();}}#region 将RadioBtn设成选中状态 /// <summary> /// 将RadioBtn设成选中状态 /// </summary> private void SetRadioBtnCheck() { if (Request.QueryString["Rediobtn"] != null) { System.Text.StringBuilder js = new System.Text.StringBuilder(); js.Append("<script>\r\n"); js.Append("function ld(){\r\n"); js.Append("for(i=0;i<document.getElementsByName('RadioName').length;i++)\r\n"); js.Append("if(document.getElementsByName('RadioName')[i].value==" +Request.QueryString["Rediobtn"] +")" ); js.Append("document.getElementsByName('RadioName')[i].checked=true\r\n"); js.Append("}\r\n"); js.Append("window.onload=ld\r\n"); js.Append("</"+"script>\r\n"); this.RegisterStartupScript("js",js.ToString()); } } #endregion <asp:DataGrid id="DataGrid1" runat="server"><Columns><asp:TemplateColumn HeaderText="select"><ItemTemplate><input onclick="getValue(this);" type="Radio" value='<%#Eval("...")%>' name="Rad">asp:RadioButton></ItemTemplate></asp:TemplateColumn></Columns></asp:DataGrid><input type="hidden" id="hid" runat="server">取值用隐藏域<script>function getValue(item){if(item.Checked) document.getElementById("hid").value = item.value;}</script>后台直接访问hid.Value就知道是选了哪个了 忘了个很重要的东西,<input type="radio">要加一个name属性,这样才能实现单选。 /// <summary> /// 添加单选框形式的单选列的输出,列名为radioSelect,形式如下: /// <INPUT id="dgSelect" type="radio" name="dgSelect" value="[行号]"> /// </summary> /// <param name="dt"></param> public static void AddRadioSelect(ref DataTable dt) { string strRadio; dt.Columns.Add("radioSelect"); for (int i=0 ;i<dt.Rows.Count;i++) { strRadio="<INPUT id=\"dgSelect\" type=\"radio\" name=\"dgSelect\" value="+i.ToString().Trim()+">"; dt.Rows[i]["radioSelect"]=strRadio; } }/// <summary> /// 获取以单选框为选择列的DATAGRID中选中行的记录的GUID /// </summary> /// <param name="page">所在页面</param> /// <param name="dg">DATAGRID</param> /// <param name="GUIDCol">GUID所在列</param> /// <param name="pagination">是否有分页</param> /// <returns>GUID</returns> public static string GetSelectedGUID(Page page,DataGrid dg,int GUIDCol,bool pagination) { try { int selectedRow = int.Parse(page.Request.Form["dgSelect"].Trim()); if(pagination) { selectedRow = selectedRow % dg.PageSize; } return dg.Items[selectedRow].Cells[GUIDCol].Text; } catch {return null;} }别忘了在datagrid里绑定“radioSelect” /// <summary> /// 添加单选框形式的单选列的输出,列名为radioSelect,形式如下: /// <INPUT id="dgSelect" type="radio" name="dgSelect" value="[行号]"> /// </summary> /// <param name="dt"></param> public static void AddRadioSelect(ref DataTable dt) { string strRadio; dt.Columns.Add("radioSelect"); for (int i=0 ;i<dt.Rows.Count;i++) { strRadio="<INPUT id=\"dgSelect\" type=\"radio\" name=\"dgSelect\" value="+i.ToString().Trim()+">"; dt.Rows[i]["radioSelect"]=strRadio; } }/// <summary> /// 获取以单选框为选择列的DATAGRID中选中行的记录的GUID /// </summary> /// <param name="page">所在页面</param> /// <param name="dg">DATAGRID</param> /// <param name="GUIDCol">GUID所在列</param> /// <param name="pagination">是否有分页</param> /// <returns>GUID</returns> public static string GetSelectedGUID(Page page,DataGrid dg,int GUIDCol,bool pagination) { try { int selectedRow = int.Parse(page.Request.Form["dgSelect"].Trim()); if(pagination) { selectedRow = selectedRow % dg.PageSize; } return dg.Items[selectedRow].Cells[GUIDCol].Text; } catch {return null;} }别忘了在datagrid里绑定“radioSelect” 补充:1 aspx:<asp:BoundColumn DataField="radioSelect" ></asp:BoundColumn>2绑定:<asp:datagrid id=DataGrid1 runat="server" DataSource="<%# BJList %>"。public DataTable BJList { get { DataTable dt = GetBJList(Label1.Text).Tables[0]; DataGridHelper.AddRadioSelect(ref dt); return dt; } }3 读取选中值:string defid=DataGridHelper.GetSelectedGUID(this.Page,this.DataGrid1,0,true,"dgSelect"); 这一列的radiobutton在客户端的name一致就可以了 导出EXCEL问题,帮忙一下,谢谢! 可以解释下什么是责任成本吗? 请问怎么调用app_code里面文件夹里面类文件? textbox焦点触发事件把页面布局拉乱 关于forms 认证后 的 很多疑惑!!!!! 页面刚调出的时候没有滚动条,当点击了response.write("window.open()")后就出现水平和垂直滚动条,怎样取消这个滚动条? web应用程序的控件初始化问题???????? 模板列中传多个参数, 树的问题 怎样限制访问者的IP 如何获取MSN联系人的列表啊? Asp.net 请问怎么实现在线播放电影?
<asp:DataGrid id="DataGrid1" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="select">
<ItemTemplate>
<asp:RadioButton id="RadioButton1" runat="server" GroupName="slt" Text="select"></asp:RadioButton>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
命名为Rediobtn. 然后在Page_load中加入如下代码
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
this.SetRadioBtnCheck();
}
}
#region 将RadioBtn设成选中状态
/// <summary>
/// 将RadioBtn设成选中状态
/// </summary>
private void SetRadioBtnCheck()
{
if (Request.QueryString["Rediobtn"] != null)
{
System.Text.StringBuilder js = new System.Text.StringBuilder();
js.Append("<script>\r\n");
js.Append("function ld(){\r\n");
js.Append("for(i=0;i<document.getElementsByName('RadioName').length;i++)\r\n");
js.Append("if(document.getElementsByName('RadioName')[i].value==" +Request.QueryString["Rediobtn"] +")" );
js.Append("document.getElementsByName('RadioName')[i].checked=true\r\n");
js.Append("}\r\n");
js.Append("window.onload=ld\r\n");
js.Append("</"+"script>\r\n");
this.RegisterStartupScript("js",js.ToString());
}
}
#endregion
<Columns>
<asp:TemplateColumn HeaderText="select">
<ItemTemplate>
<input onclick="getValue(this);" type="Radio" value='<%#Eval("...")%>' name="Rad">asp:RadioButton>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<input type="hidden" id="hid" runat="server">
取值用隐藏域
<script>
function getValue(item)
{
if(item.Checked)
document.getElementById("hid").value = item.value;
}</script>
后台直接访问hid.Value就知道是选了哪个了
/// 添加单选框形式的单选列的输出,列名为radioSelect,形式如下:
/// <INPUT id="dgSelect" type="radio" name="dgSelect" value="[行号]">
/// </summary>
/// <param name="dt"></param>
public static void AddRadioSelect(ref DataTable dt)
{
string strRadio;
dt.Columns.Add("radioSelect");
for (int i=0 ;i<dt.Rows.Count;i++)
{
strRadio="<INPUT id=\"dgSelect\" type=\"radio\" name=\"dgSelect\" value="+i.ToString().Trim()+">";
dt.Rows[i]["radioSelect"]=strRadio;
}
}/// <summary>
/// 获取以单选框为选择列的DATAGRID中选中行的记录的GUID
/// </summary>
/// <param name="page">所在页面</param>
/// <param name="dg">DATAGRID</param>
/// <param name="GUIDCol">GUID所在列</param>
/// <param name="pagination">是否有分页</param>
/// <returns>GUID</returns>
public static string GetSelectedGUID(Page page,DataGrid dg,int GUIDCol,bool pagination)
{
try
{
int selectedRow = int.Parse(page.Request.Form["dgSelect"].Trim());
if(pagination)
{
selectedRow = selectedRow % dg.PageSize;
}
return dg.Items[selectedRow].Cells[GUIDCol].Text;
}
catch
{return null;}
}别忘了在datagrid里绑定“radioSelect”
/// 添加单选框形式的单选列的输出,列名为radioSelect,形式如下:
/// <INPUT id="dgSelect" type="radio" name="dgSelect" value="[行号]">
/// </summary>
/// <param name="dt"></param>
public static void AddRadioSelect(ref DataTable dt)
{
string strRadio;
dt.Columns.Add("radioSelect");
for (int i=0 ;i<dt.Rows.Count;i++)
{
strRadio="<INPUT id=\"dgSelect\" type=\"radio\" name=\"dgSelect\" value="+i.ToString().Trim()+">";
dt.Rows[i]["radioSelect"]=strRadio;
}
}/// <summary>
/// 获取以单选框为选择列的DATAGRID中选中行的记录的GUID
/// </summary>
/// <param name="page">所在页面</param>
/// <param name="dg">DATAGRID</param>
/// <param name="GUIDCol">GUID所在列</param>
/// <param name="pagination">是否有分页</param>
/// <returns>GUID</returns>
public static string GetSelectedGUID(Page page,DataGrid dg,int GUIDCol,bool pagination)
{
try
{
int selectedRow = int.Parse(page.Request.Form["dgSelect"].Trim());
if(pagination)
{
selectedRow = selectedRow % dg.PageSize;
}
return dg.Items[selectedRow].Cells[GUIDCol].Text;
}
catch
{return null;}
}别忘了在datagrid里绑定“radioSelect”
1 aspx:
<asp:BoundColumn DataField="radioSelect" ></asp:BoundColumn>
2绑定:<asp:datagrid id=DataGrid1 runat="server" DataSource="<%# BJList %>"。public DataTable BJList
{
get
{
DataTable dt = GetBJList(Label1.Text).Tables[0];
DataGridHelper.AddRadioSelect(ref dt);
return dt;
}
}3 读取选中值:
string defid=DataGridHelper.GetSelectedGUID(this.Page,this.DataGrid1,0,true,"dgSelect");