大家好!我在GridView中使用了ItemTemplate,ItemTemplate里面是一个Table.我在Table里面放了一个LinkButton,作用是删除,现在我想实现的是点击每一行相对应的LinkButton就实现将对应的行删除,但我在后台代码中无法获得作为标识的"gg_ID",请大家指点下应该怎么做才能使我在后台代码中获得页面上点击了LinkButton按钮对应行的一个字段的值.(我不希望用本身的 AutoGenerateDeleteButton 属性,因为排版太难看了)
ps:我的GRIDVIEW是利用后台代码绑定的,不是直接绑定的.另外,网上说的用SelectedDataKey.Value.ToString行不通(HTML代码中的GridView属性我已经定义了DataKeyNames),这是为什么呢?
下面是我根据网友们的提示作的尝试:
<HTML>代码:<asp:GridView ID="GridView1" AutoGenerateColumns="False" DataKeyNames="gg_id" OnSelectedIndexChanging="GridView_SelectedIndexChanging" runat="server" >.CS代码:
static String gg_id;
protected void GridView_SelectedIndexChanging(object sender, EventArgs e)
{
gg_id = GridView1.SelectedDataKey.Value.ToString();
}
}
ps:我的GRIDVIEW是利用后台代码绑定的,不是直接绑定的.另外,网上说的用SelectedDataKey.Value.ToString行不通(HTML代码中的GridView属性我已经定义了DataKeyNames),这是为什么呢?
下面是我根据网友们的提示作的尝试:
<HTML>代码:<asp:GridView ID="GridView1" AutoGenerateColumns="False" DataKeyNames="gg_id" OnSelectedIndexChanging="GridView_SelectedIndexChanging" runat="server" >.CS代码:
static String gg_id;
protected void GridView_SelectedIndexChanging(object sender, EventArgs e)
{
gg_id = GridView1.SelectedDataKey.Value.ToString();
}
}
解决方案 »
- 用网页模式对话框显示数据不刷新????
- 自定义控件继承 报"不具有名为***的公共属性"的异常
- 怎样从一个aspx页面弹出一个窗口,这个窗口里有一个TreeView,我选取它的某项然后把他的text传到,主页面的texttbox上。
- 用了asp.net ajax,为了转换页面,都使用了ascx动态载来载去,问题来了
- 如何打印web页面,不能把页眉和页脚打印出来?
- 请问,在程序中如何实现客户端链接数据库服务器。
- 用SqlDataReader在网页中显示数据库数据
- 十万火急, 简单问题, 关于动态绑定
- 关于用文字链接来实现对asp.net对象的保存
- 问个VS2005里的ASP.NET服务器问题!
- 初级问题,请问WEB界面设计与界面逻辑代码开发是如何分工和结合的?谢谢
- 关于一个replace替换字符串的问题
protected void GridView_SelectedIndexChanging(object sender, EventArgs e)
{
gg_id = GridView.DataKeys[gr.DataItemIndex].Value.ToString().Trim();
}
参考03是用DataGrid1.DataKeys[ e.Item.ItemIndex].ToString();
{
gg_id = GridView.DataKeys[gr.DataItemIndex].Value.ToString().Trim();
}
<asp:LinkButton ID="LinkButton1" CommandArgument='<%#Eval("ID") %>' runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton></div>然后在你的LinkButton事件中 获取这个ID
string ID = ((LinkButton)sender).CommandArgument.ToString();然后你在根据这个ID 来删除就ok了
取值用e.CommandArgument
//{
// if (e.CommandName == "MyCommand")
// {
// Button button = (Button)e.CommandSource;
// GridViewRow row = (GridViewRow)button.Parent.Parent;
// string a = row.Cells[1].Text.ToString();//获得第一个单元格的值
// string b = this.GridView1.DataKeys[row.DataItemIndex].Values[0];//获得DataKeys的值
// }
//}
------------
<ItemTemplate>
<asp:LinkButton ID="lbtnEdit" runat="server" CommandName="MyCommand" CausesValidation="False">编辑</asp:LinkButton>
</ItemTemplate>-------------
另外一种常用方法
HTML Code
<asp:TemplateField HeaderText="删除">
<ItemTemplate>
<asp:LinkButton ID="lbtnDel" runat="server" CommandName="Delete" OnClientClick="return confirm('确认要删除吗?');" CausesValidation="False">删除</asp:LinkButton>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
<FooterStyle HorizontalAlign="Center" />
</asp:TemplateField>
调用Gridview的事件-----CommandName="Delete"
C# Code
protected void gvUser_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
empId = gvUser.DataKeys[e.RowIndex].Values["empId"].ToString().Trim();
//删除方法
}