这是方案..
我有GridView
个列ID
,Name
和Type
。点击已启用Name
,并会重定向到其他页面。可以选择整行,并使用jQuery
我更改了背景,以便将其识别为选定行。
必须选择它的原因是因为页面上存在link
,例如Delete
。单击Delete
时,应删除所选行,但如果没有选定行,则不应执行任何操作。
这是我的代码:
<asp:LinkButton ID="btnDelete" runat="server">Delete</asp:LinkButton>
<asp:GridView ID="gridView" runat="server" OnRowDataBound="gridView_RowDataBound" OnRowCommand="gridView_Command" AutoGenerateColumns="false" >
<columns>
<asp:BoundField DataField="ID" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lb1" runat="server" Text='<%# Eval("Name") %>' CommandName="NameButton" CommandArgument='<%# Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Type" />
</columns>
</asp:GridView>
public void gridView_Command(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "NameButton")
{
var id = e.CommandArgument;
// redirect to edit page //
}
}
我正在使用jQuery
表示选择了一行。
我已经有了Delete
事件方法的代码,但我的问题是如何告诉编译器在点击Delete
时当前选择了一行?
我正在考虑使用hidden field
,而在jQuery
上,我会将隐藏字段的值设置为所选行的ID
。但是,我仍然不知道如何做到这一点。
答案 0 :(得分:1)
非常直接。您可以将SelectedIndex
存储在隐藏字段中,然后按索引查找GridViewRow
。
在标记中添加隐藏字段,并将事件方法附加到“链接”按钮:
<asp:LinkButton ID="btnDelete" OnClick="btnDelete_Click" runat="server">Delete</asp:LinkButton>
<asp:HiddenField ID="hdnIndex" runat="server" />
<asp:GridView ID="gridView" runat="server" OnRowDataBound="gridView_RowDataBound"
OnRowCommand="gridView_RowCommand" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="ID" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lb1" runat="server" Text='<%# Eval("Name") %>' CommandName="NameButton" CommandArgument='<%# Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Type" />
</Columns>
</asp:GridView>
在GridView RowDataBound中添加一个属性来执行javascript以在隐藏字段中保存索引:
protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onclick", "javascript: getElementById('" + hdnIndex.ClientID + "').value='" + e.Row.RowIndex + "';");
}
}
LinkButton
的点击事件是这样的:
protected void btnDelete_Click(object sender, EventArgs e)
{
int index = 0;
int id = 0;
if (int.TryParse(hdnIndex.Value, out index))
{
GridViewRow gvr = gridView.Rows[index];
if (gvr != null && int.TryParse(gvr.Cells[0].Text, out id) )
{
// id is available here
// do wahtever you want with the id
// even you can delete the record from db by id
}
}
}
答案 1 :(得分:0)
我猜命令论证就是你要搜索的...... Check this link
您只需要将Id
using命令参数从前端传递到代码文件,然后就可以轻松删除它。