处理两个不同的LinkBut ton获得DataKeys

问题描述 投票:0回答:1

我正在向旧系统添加新功能,我需要在LinkButton中添加新的GridView,如何知道单击了哪个LinkButton,以便可以执行其他操作。现在,他们当然在做同样的事情。

<asp:GridView ID="gvHabitacionesCD" runat="server" CssClass="datatable"
                    AutoGenerateColumns="False" Width="100%"
                    OnSelectedIndexChanged="gv_SelectedIndexChanged"
                    EmptyDataText="Select a Period"
                    DataKeyNames="idH">
                    <Columns>
                        <asp:BoundField HeaderText="idH" DataField="idH" Visible="false" />
                        <asp:TemplateField HeaderText="Last Name">
                            <ItemTemplate>
                                <asp:LinkButton ID="btnSelectLastName" runat="server" CommandName="Select" Text='<%# Eval("LastName") %>'></asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Name">
                            <ItemTemplate>
                                <asp:LinkButton ID="btnSelectName" runat="server" CommandName="Select" Text='<%# Eval("Name") %>'></asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
</asp:GridView>

在隐藏代码上

protected void gv_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridView gv = (GridView)(sender);
            getReservation(gv.DataKeys[gv.SelectedIndex].Value.ToString());
        }
c# asp.net
1个回答
0
投票

for CommandName =“ Select”进行2个不同的命令:C

  1. CommandName =“ SelectLastName”
  2. CmmandName =“ SelectFirstName”

因此,单击每个LinkBut​​ton会知道该怎么办。

 <asp:BoundField HeaderText="idH" DataField="idH" Visible="false" />
                    <asp:TemplateField HeaderText="Last Name">
                        <ItemTemplate>
                            <asp:LinkButton ID="btnSelectLastName" runat="server" 
CommandName="SelectLastName" Text='<%# Eval("LastName") %>'></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                            <asp:LinkButton ID="btnSelectName" runat="server" 
CommandName="SelectFirstName" Text='<%# Eval("Name") %>'></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>

[另一个选择是保持您的代码不变,并向每个链接添加CommandArgument =“ YourValueHere”并读取CommandName =“ Select”中的CommandArgument来了解单击了哪个LinkBut​​ton-如下所示:

<asp:BoundField HeaderText="idH" DataField="idH" Visible="false" />
                    <asp:TemplateField HeaderText="Last Name">
                        <ItemTemplate>
                            <asp:LinkButton ID="Select" runat="server" 
CommandName="SelectLastName" Text='<%# Eval("LastName") %>'> 
CommandArgument="LastName"</asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                            <asp:LinkButton ID="Select" runat="server" 
CommandName="SelectFirstName" Text='<%# Eval("Name") %>'>
CommandArgument="FirstName"</asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>

然后在CommandName =“ Select”时在后面的代码中>

If (CommandArgument="LastName")
 //do something
If (CommandArgument="FirstName")
 //do something else
© www.soinside.com 2019 - 2024. All rights reserved.