首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

DataGrid中怎么取得每一行单选钮的值?(非常急)

2011-12-23 
DataGrid中如何取得每一行单选钮的值?(非常急,在线等!)现在在DataGrid中绑定了两列,这两列中的radio构成一

DataGrid中如何取得每一行单选钮的值?(非常急,在线等!)
现在在DataGrid中绑定了两列,这两列中的radio构成一个单选按钮组,
<asp:TemplateColumn   SortExpression= "menulist "   HeaderText= "加 ">
<HeaderStyle   HorizontalAlign= "Center "   ForeColor= "White "   BackColor= "#34A4E0 "> </HeaderStyle>
<ItemStyle   Width= "3% "> </ItemStyle>
<ItemTemplate>
<input   type= "radio "   id= "asum "   name= "asum "   runat= "server "   VALUE= "asum "   />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn   SortExpression= "menulist "   HeaderText= "减 ">
<HeaderStyle   HorizontalAlign= "Center "   ForeColor= "White "   BackColor= "#34A4E0 "> </HeaderStyle>
<ItemStyle   Width= "3% "> </ItemStyle>
<ItemTemplate>
<input   type= "radio "   id= "asum "   name= "asum "   runat= "server "   VALUE= "asub "   />
</ItemTemplate>
</asp:TemplateColumn>
现在想问我在遍历DataGrid中的每一行时,如何取得这个radio的取值啊?
foreach(DataGridItem   dgi   in   dgClass.Items)
{
这应该如何写才能获得这个按钮组的取值啊?
}
非常谢谢大家了!在线等!

[解决办法]
用RadioButton就可以了,设定GroupName
[解决办法]
我做的是整个的dataGrid里面的radiobutton只能有一个被选择.而不是一行
[解决办法]
比如旅游有很多路线,路线全部用datagrid绑定出来,然选择要走的路线,当然路线是唯一的.那么提交的时候就要用到遍历了,看看选的是哪条旅游路线.其中在选择的时候就要用到radiobutton.
========
1。
由于对于DataGrid中的服务器控件 radio(不论是 RadioButton还是 input type=radio runat=server),asp.net 为按 NamingContainer 规则为每个 Radio 实现唯一的 UnqiueID(对应客户端的 name 属性),故无法在一个 DataGrid 内实现单选。

对于 GridView DataList Repeater 情况是一样的。

这是一个已知的 “BUG”(按规则讲,不能算是;按实用角度看,的确是)。

2。
应该考虑使用原始的 input type=radio ,
此示例实现 LZ 的需要:

<%@ Page Language= "C# " %>
<%@ Import Namespace= "System.Data " %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

<script runat= "server ">

void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
LoadProductData();
}
}

protected void Button1_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(Request.Form[ "rbtnProduct "])) throw new Exception( "请选择一项 ");

string[] selectedRadioButtonValueArray = Request.Form[ "rbtnProduct "].Split( '$ '); // 获取被选中 radio 的值, rbtnProduct 为 radio 的客户端 name 属性值
int selectedItemIndex = int.Parse(selectedRadioButtonValueArray[0]); // 选择项索引
DataGridItem selectedGridItem = grdPro.Items[selectedItemIndex]; // 获取 DataGrid 的选择项
Response.Write(selectedGridItem.Cells[3].Text); // test
string whichRadioInItemFlag = selectedRadioButtonValueArray[1];
Response.Write(whichRadioInItemFlag);
if (whichRadioInItemFlag == "Flag1 ") {
// ...


}
else if (whichRadioInItemFlag == "Flag2 ") {
// ...
}
// more ...
//else {
//}
}

void LoadProductData()
{
grdPro.DataSource = CreateProductTable();
grdPro.DataBind();
}

#region sample data

static DataTable CreateProductTable()
{
DataTable tbl = new DataTable( "Products ");

tbl.Columns.Add( "ProductID ", typeof(int));
tbl.Columns.Add( "ProductName ", typeof(string));
tbl.Columns.Add( "CategoryID ", typeof(int));
DataRow row = tbl.NewRow();
row[0] = 1;
row[1] = "Chai ";
row[2] = 1;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 2;
row[1] = "Chang ";
row[2] = 1;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 3;
row[1] = "Aniseed Syrup ";
row[2] = 2;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 4;
row[1] = "Chef Anton 's Cajun Seasoning ";
row[2] = 2;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 5;
row[1] = "Chef Anton 's Gumbo Mix ";
row[2] = 2;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 47;
row[1] = "Zaanse koeken ";
row[2] = 3;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 48;
row[1] = "Chocolade ";
row[2] = 3;
tbl.Rows.Add(row);

row = tbl.NewRow();
row[0] = 49;
row[1] = "Maxilaku ";
row[2] = 3;
tbl.Rows.Add(row);

return tbl;
}

#endregion


</script>

<html xmlns= "http://www.w3.org/1999/xhtml " >
<head runat= "server ">
<title> DataGrid RadioButton </title>

</head>
<body>
<form id= "form1 " runat= "server ">
<div>
<asp:DataGrid ID= "grdPro " DataKeyField= "ProductID " runat= "server ">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
选项1: <input type= "radio " id= "rbtnProduct " name= "rbtnProduct " value= ' <%# Container.ItemIndex + "$Flag1 " %> ' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
选项2: <input type= "radio " id= "rbtnProduct " name= "rbtnProduct " value= ' <%# Container.ItemIndex + "$Flag2 " %> ' />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Button ID= "Button1 " runat= "server " Text= "Button " OnClick= "Button1_Click " />
</div>
</form>
</body>
</html>

热点排行