gridview取主键的问题,全乱了请好心人解答

xuxu1986122 2009-04-03 11:23:13
我要在GRIDVIEW里添加一个按钮,那个按钮需要编写事件。现在在编辑列里面是该选一个模板列然后添加按钮。还是直接选个buttonfild。谁能给详细说说他们分别获取事件的方法和取主键的方法。 谢谢! 我现在都给弄混了。
...全文
207 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
itliyi 2009-04-03
  • 打赏
  • 举报
回复
1 直接模板列里面加个按钮
<ItemTemplate> <asp:LinkButton ID="AddClass" runat="server" CausesValidation="False" CommandArgument=' <%#Eval("主键") %>' CommandName="XXX"
Text="添加栏目"> </asp:LinkButton>

</ItemTemplate>

RowCommand事件里面判断
if(e.CommandName=="XXX")
{
int id=Convert.ToInt32(e.CommandArgument.ToString());//取主键
}

2 GridView DataKeySName 属性赋值
int id=gv.DataKesy[Index].value
3 同样添加模板,然后放按钮,按钮属性CommandName 为Delete ,Update,
然后执行RowDeleting RowUpdating事件
namhyuk 2009-04-03
  • 打赏
  • 举报
回复
以ImageButton为例,点击ImageButton后在SelectedIndex里取得主键。

前提:DataKeyNames="ProductID"


<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" CommandName="Select" ImageUrl="~/Images/button_search.gif" />
</ItemTemplate>
</asp:TemplateField>



protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "scriptKey", string.Format("alert('{0}')", GridView1.SelectedValue.ToString()), true);
}
chenwei175528 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pdsnet 的回复:]
HTML code
<asp:TemplateField HeaderText="" ShowHeader="False">
<ItemTemplate> <asp:LinkButton ID="AddClass" runat="server" CausesValidation="False" CommandArgument='<%#Eval("主键") %>' CommandName="AddClass"
Text="添加栏目"></asp:LinkButton>

</ItemTemplate>

</asp:TemplateField>


C# code pr…
[/Quote]

UP
chenwei175528 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pdsnet 的回复:]
HTML code
<asp:TemplateField HeaderText="" ShowHeader="False">
<ItemTemplate> <asp:LinkButton ID="AddClass" runat="server" CausesValidation="False" CommandArgument='<%#Eval("主键") %>' CommandName="AddClass"
Text="添加栏目"></asp:LinkButton>

</ItemTemplate>

</asp:TemplateField>


C# code pr…
[/Quote]

UP
huang_net 2009-04-03
  • 打赏
  • 举报
回复
两个方式都可以!
建议还是使用Template放上一个button
xuxu1986122 2009-04-03
  • 打赏
  • 举报
回复
不是模板列怎么还能FINDCONTROL啊?
koukoujiayi 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 xuxu1986122 的帖子:]
现在在编辑列里面是该选一个模板列然后添加按钮。还是直接选个buttonfild。
[/Quote]
这两个都可以,直接选个buttonfild(select)简单一点,
在GridView的SelectedIndexChanged事件中就能捕获你点击的那一行,并在该事件下写你的代码!!
该事件下取得主键的代码:
string a = GridView1.SelectedDataKey.Value.ToString();
zc619 2009-04-03
  • 打赏
  • 举报
回复


按钮
<asp:ButtonField HeaderText="删 除" Text="删除" CommandName="Deleted" />

事件
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
//根据CommandName判断用户是删除操作
if (e.CommandName == "Deleted")
{
//获取主键
TextBox txt = (TextBox)this
.GridView1
.Rows[int.Parse(e
.CommandArgument.ToString())]
.FindControl(".....");
}
}
pdsnet 2009-04-03
  • 打赏
  • 举报
回复

<asp:TemplateField HeaderText="" ShowHeader="False">
<ItemTemplate> <asp:LinkButton ID="AddClass" runat="server" CausesValidation="False" CommandArgument='<%#Eval("主键") %>' CommandName="AddClass"
Text="添加栏目"></asp:LinkButton>

</ItemTemplate>

</asp:TemplateField>
 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{

if (e.CommandName == "AddClass")
{

e.CommandArgument.ToString()//主键 }
xuxu1986122 2009-04-03
  • 打赏
  • 举报
回复
没有人帮忙吗?哎!
xuxu1986122 2009-04-03
  • 打赏
  • 举报
回复
嗯,弄出来了。但是很多种方法还是挺混乱了,以后慢慢理解吧,谢谢大家

62,268

社区成员

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

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

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

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