Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp GridView选择一行,然后触发事件_C#_Asp.net_Gridview - Fatal编程技术网

C# Asp GridView选择一行,然后触发事件

C# Asp GridView选择一行,然后触发事件,c#,asp.net,gridview,C#,Asp.net,Gridview,下面是一个场景 我有一个GridView,其中包含ID、Name和Type名称已启用并将重定向到其他页面。可以选择整行,并使用jQueryI更改其背景,以便将其识别为选中行 必须选择它的原因是页面上存在链接,例如删除。单击Delete时,它应删除所选行,但如果没有所选行,则不应执行任何操作 这是我的密码: <asp:LinkButton ID="btnDelete" runat="server">Delete</asp:LinkButton> <asp:GridV

下面是一个场景

我有一个
GridView
,其中包含
ID
Name
Type
<代码>名称已启用并将重定向到其他页面。可以选择整行,并使用
jQuery
I更改其背景,以便将其识别为选中行

必须选择它的原因是页面上存在
链接
,例如
删除
。单击
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 //
    }
}
删除
public void gridView_命令(对象发送方,GridViewCommandEventArgs e)
{
如果(例如,CommandName==“NameButton”)
{
var id=e.CommandArgument;
//重定向到编辑页面//
}
}
我正在使用
jQuery
指示选中了一行

我已经有了
Delete
事件方法的代码,但我的问题是如何告诉编译器在单击
Delete
时当前选择了一行


我正在考虑使用一个
隐藏字段
,在
jQuery
上,我将把隐藏字段的值设置为所选行的
ID
。但是,我仍然不知道该怎么做。

我想您正在搜索的是命令参数…

您只需将
Id
using命令参数从前端传递到代码文件,然后就可以轻松地将其删除。

这很简单。您可以将
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>
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
        }               
    }
}

对不起,我不明白。如何传递
Id
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
        }               
    }
}