急急急急急急急急急急急急急急急急!!!GridView嵌入DataList (重发)

gz5182009 2012-06-04 03:13:16
我在嵌入的GridView中绑定了一个CheckBox我想在CheckBox选中是调用GridView的GridView_RowCommand事件,但怎么样点击CheckBox,GridView_RowCommand这个事件都没反应,请高手解答
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gz5182009 2012-06-04
  • 打赏
  • 举报
回复
自己解决了
 GridViewRow gvr = (GridViewRow)((CheckBox)sender).Parent.Parent;
string code = gvr.Cells[1].Text.ToString();
myrroom 2012-06-04
  • 打赏
  • 举报
回复
不行用HiddenField做下标识
licai1210 2012-06-04
  • 打赏
  • 举报
回复
 <form id="form1" runat="server">
<div>
<table>
<asp:DataList ID="DataList1" runat="server" Width="100%" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
</td>
<td>
<asp:GridView ID="gridUser" runat="server" Width="100%" AutoGenerateColumns="False"
Font-Size="12px" ForeColor="#333333" BorderColor="#5AAFF4" ShowHeader="False">
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="Cb1" runat="server" AutoPostBack="true" Text='<%#Eval("Id") %>' OnCheckedChanged="OnCheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</ItemTemplate>
</asp:DataList>
</table>
</div>
</form>


protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var list = new[] {
new{Id="1号",Name="一号"},
new{Id="2号",Name="二号"},
new{Id="3号",Name="三号"},
new{Id="4号",Name="四号"}
}.ToList();
DataList1.DataSource = list;
DataList1.DataBind();
}
}
protected void OnCheckedChanged(object sender, EventArgs e)
{
GridViewRow gvr = ((CheckBox)sender).NamingContainer as GridViewRow;
string name = ((CheckBox)sender).Text;
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.Separator || e.Item.ItemType == ListItemType.AlternatingItem)
{
var list = new[] {
new{Id="1号",Name="1号"},
new{Id="2号",Name="2号"},
new{Id="3号",Name="3号"},
new{Id="4号",Name="4号"}
}.ToList();
GridView gv = e.Item.FindControl("gridUser") as GridView;
gv.DataSource = list;
gv.DataBind();
}
}

测试这个
licai1210 2012-06-04
  • 打赏
  • 举报
回复
你的界面是怎样的
gz5182009 2012-06-04
  • 打赏
  • 举报
回复
废话有点对直接上代码:
<asp:DataList ID="DataList1" runat="server" Width="100%" 
onitemdatabound="DataList1_ItemDataBound"
onitemcommand="DataList1_ItemCommand">
<ItemTemplate>
<table class="style2">
<tr>
<td class="style3">
<asp:Label ID="Label1" runat="server" Text='<%# Eval("WName") %>'
Visible="False"></asp:Label>
</td>
<td align="left">
<asp:GridView ID="gridUser" runat="server" Width="100%" AutoGenerateColumns="False" Font-Size="12px" ForeColor="#333333" OnRowDataBound="gridUser_RowDataBound" BorderColor="#5AAFF4" onrowcommand="gridUser_RowCommand" ShowHeader="False" >
<Columns>
<asp:TemplateField HeaderText="选择" >
<ItemTemplate>
<asp:CheckBox ID="Cb1" runat="server" oncheckedchanged="Cb1_CheckedChanged" AutoPostBack="true" CommandName="lbtn" Text='<%# Eval("id") %>' /> <%--AutoPostBack="True" --%>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" Width="2%" />
<HeaderStyle HorizontalAlign="Left" Width="2%" />
</asp:TemplateField>
<asp:BoundField DataField="dj" HeaderText="dj">
<HeaderStyle HorizontalAlign="Left" Width="98%" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
</Columns>
<FooterStyle BackColor="#5AAFF4" Font-Bold="True" BorderColor="#CCCCCC" />
<RowStyle BackColor="#EFF3FB" BorderColor="#CCCCCC" />
<EditRowStyle BackColor="#2461BF" BorderColor="#CCCCCC" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5AAFF4" Font-Bold="True" ForeColor="White" BorderColor="#CCCCCC" />
<AlternatingRowStyle BackColor="White" />
<EmptyDataRowStyle BackColor="#5AAFF4" BorderColor="#CCCCCC" />
</asp:GridView>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>


protected void Cb1_CheckedChanged(object sender, EventArgs e)
{
string ss = "";
foreach (DataListItem di in DataList1.Items)
{
CheckBox cb = new CheckBox();
GridView dv = (GridView)di.FindControl("gridUser");
//for (int i = 0; i < ds.Items.Count;i++ )
if (getCheckvalue(dv, "") != "")
{
if (ss == "")
{
ss = getCheckvalue(dv, "");
}
else
{
ss = ss + "," + getCheckvalue(dv, "");
}

}
}
ss = ss.Replace("'", "");
TextBox1.Text = ss;
}
绑定的我就不写了 关键是Cb1_CheckedChanged这个方法无法取到点击CheckBox的那个值
gz5182009 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你这样是行不通的啊,Checkbox都没有CommandName这个属性,是直接调用不了GridView_RowCommand。上一个贴不是回了你一个方法吗?你结贴可以不需要那么快,完全可以坐等看有没有更好的回答
[/Quote]
我看到你刚才的帖子了
我现在是这样的一个问题 我用GridView嵌入DataList将许多条数据根据类别进行了绑定并在GridView上添加了一个Checkbox 我想点击一个Checkbox 在控件下面的TextBox中显示Checkbox选中的对应的项 之前用的就是你的方法 可是因为Checkbox在GridView中所以根本无法取到GridView 只能foreach (DataListItem di in DataList1.Items)来进行循环 这样就无法实现点击一个Checkbox显示一条的效果了
licai1210 2012-06-04
  • 打赏
  • 举报
回复
你这样是行不通的啊,Checkbox都没有CommandName这个属性,是直接调用不了GridView_RowCommand。上一个贴不是回了你一个方法吗?你结贴可以不需要那么快,完全可以坐等看有没有更好的回答

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧