DataGrid选中的问题 本帖最后由 by1782 于 2009-12-07 23:49:26 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以结合DataGrid的ItemDataBound事件和js做前台页面<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <asp:DataGrid ID="DG_List" runat="server" AutoGenerateColumns="False" OnItemDataBound="DG_List_ItemDataBound"> <Columns> <asp:TemplateColumn HeaderText="选择"> <ItemTemplate> <asp:CheckBoxList ID="CheckBoxList1" runat="server"> <asp:ListItem Value="12">12</asp:ListItem> <asp:ListItem>13</asp:ListItem> </asp:CheckBoxList> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn DataField="FID" HeaderText="FId"></asp:BoundColumn> </Columns> </asp:DataGrid> <asp:Label ID="TextBox1" runat="server"></asp:Label></div> </form></body></html>后台代码:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { ControlBind(); } } private void ControlBind() { DataTable dt = new DataTable(); DataColumn dc = new DataColumn("FID", typeof(int)); dt.Columns.Add(dc); for (int i = 1; i <= 10; i++) { DataRow row = dt.NewRow(); row["FID"] = i; dt.Rows.Add(row); } this.DG_List.DataSource = dt; this.DG_List.DataBind(); } protected void DG_List_ItemDataBound(object sender, DataGridItemEventArgs e) { if (e.Item.ItemIndex > -1) { string sId = e.Item.Cells[1].Text; CheckBoxList boxList = e.Item.Cells[0].FindControl("CheckBoxList1") as CheckBoxList; foreach (ListItem li in boxList.Items) { li.Attributes.Add("onclick", "document.getElementById('TextBox1').innerText=" + li.Value); } } }}希望对你有帮助 尝试了一下,下列方式可以做到 //按你说的CheckBoxList1的SelectedIndexChanged事件中 protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) { string myValue; //你的CheckBoxList1所在行的第一列的值 myValue = ((GridViewRow)((Control)sender).NamingContainer).Cells[0].Text; Label1.Text = myValue; } 这个。。有很大问题吗?只要利用事件e来findcontrol来查找你需要显示列的控件,找到该控件后,直接读取该控件的text,然后显示在你想要显示的lable上不就OK了吗?不需要遍历的。 这个有用,但是是GridView控件的,我用的是DataGriD。4楼的也可以,但是要给选项添加属性,还有其他简洁的法子么? 关于gridview中的RowEditing和RowUpdating 求MVC 分页(急) IIS运行下可以调试代码吗? 怎样把文字转换成图片! 求pdf文件转换为图片文件输出代码。(需要高手阿!) 动态生成的dropdownlist,绑定数据后用SelectedIndex=1无法定位到第2条记录! 为什么雅虎收不到邮件? MS project可以通过VB编辑器和。NET连接吗?急~ 再问:ASP.net form验证,cookie加入Domain后无法注销的问题? 如何在程序中控制页面的标题、状态栏? jQuery+JSON asp.net数据输出问题 关于ASP.NET的配置问题
前台页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataGrid ID="DG_List" runat="server" AutoGenerateColumns="False" OnItemDataBound="DG_List_ItemDataBound">
<Columns>
<asp:TemplateColumn HeaderText="选择">
<ItemTemplate>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem Value="12">12</asp:ListItem>
<asp:ListItem>13</asp:ListItem>
</asp:CheckBoxList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="FID" HeaderText="FId"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
<asp:Label ID="TextBox1" runat="server"></asp:Label></div>
</form>
</body>
</html>
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ControlBind();
}
} private void ControlBind()
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("FID", typeof(int));
dt.Columns.Add(dc);
for (int i = 1; i <= 10; i++)
{
DataRow row = dt.NewRow();
row["FID"] = i;
dt.Rows.Add(row);
} this.DG_List.DataSource = dt;
this.DG_List.DataBind();
} protected void DG_List_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemIndex > -1)
{
string sId = e.Item.Cells[1].Text;
CheckBoxList boxList = e.Item.Cells[0].FindControl("CheckBoxList1") as CheckBoxList;
foreach (ListItem li in boxList.Items)
{
li.Attributes.Add("onclick", "document.getElementById('TextBox1').innerText=" + li.Value);
}
}
}
}
希望对你有帮助
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
string myValue;
//你的CheckBoxList1所在行的第一列的值
myValue = ((GridViewRow)((Control)sender).NamingContainer).Cells[0].Text;
Label1.Text = myValue;
}
这个有用,但是是GridView控件的,我用的是DataGriD。4楼的也可以,但是要给选项添加属性,还有其他简洁的法子么?