Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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# CodeBehind中的ASP.NET Gridview项模板访问_C#_Asp.net_Gridview_Code Behind_Itemtemplate - Fatal编程技术网

C# CodeBehind中的ASP.NET Gridview项模板访问

C# CodeBehind中的ASP.NET Gridview项模板访问,c#,asp.net,gridview,code-behind,itemtemplate,C#,Asp.net,Gridview,Code Behind,Itemtemplate,从codebehind中的Gridview ItemTemplate访问asp.NET HiddenField时遇到问题。我需要能够读取这些hiddenfields包含的值,以便执行delete方法。 代码如下 <%@ Control Language="C#" AutoEventWireup="true" CodeFile="MemberList.ascx.cs" Inherits="UserControls_MemberList" %> <asp:RadioButtonLi

从codebehind中的Gridview ItemTemplate访问asp.NET HiddenField时遇到问题。我需要能够读取这些hiddenfields包含的值,以便执行delete方法。 代码如下

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MemberList.ascx.cs" Inherits="UserControls_MemberList" %>
<asp:RadioButtonList ID="ReportSelect" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="1">All</asp:ListItem>
<asp:ListItem Value="2">Current Members</asp:ListItem>
<asp:ListItem Value="3">Perspective Members</asp:ListItem>
</asp:RadioButtonList>
<asp:Button ID="ReportSelectButton" runat="server" OnClick="ReportSelectButton_Click"
Text="Select Report Type" />
<asp:Button ID="LinkToHomePage" runat="server" Text="Back to Homepage" OnClick="LinkToHomePage_Click">
</asp:Button>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" Height="308px"
Width="1282px" onselectedindexchanged="GridView1_SelectedIndexChanged">
<Columns>
    <asp:BoundField HeaderText="First Name" AccessibleHeaderText="FirstName" DataField="FirstName">
    </asp:BoundField>
    <asp:BoundField HeaderText="Last Name" AccessibleHeaderText="LastName" DataField="LastName">
    </asp:BoundField>
    <asp:BoundField HeaderText="Street Address" AccessibleHeaderText="StreetAddress"
        DataField="StreetAddress"></asp:BoundField>
    <asp:BoundField HeaderText="City" AccessibleHeaderText="City" DataField="City"></asp:BoundField>
    <asp:BoundField HeaderText="State" AccessibleHeaderText="State" DataField="State">
    </asp:BoundField>
    <asp:BoundField HeaderText="Zip" AccessibleHeaderText="Zip" DataField="Zip"></asp:BoundField>
    <asp:BoundField HeaderText="Birthday" AccessibleHeaderText="Birthday" DataField="Birthday" />
    <asp:BoundField HeaderText="Email" AccessibleHeaderText="Email" DataField="Email">
    </asp:BoundField>
    <asp:BoundField HeaderText="PrimaryPhone" AccessibleHeaderText="PrimaryPhone" DataField="PrimaryPhone" />
    <asp:BoundField HeaderText="AlternatePhone" AccessibleHeaderText="AlternatePhone"
        DataField="AlternatePhone" />
    <asp:BoundField HeaderText="Pending" AccessibleHeaderText="Pending" DataField="Pending" />
    <asp:BoundField HeaderText="IsMember" AccessibleHeaderText="IsMember" DataField="IsMember" />
    <asp:BoundField HeaderText="Username" AccessibleHeaderText="Username" DataField="Username">
    </asp:BoundField>
    <asp:BoundField HeaderText="Description" AccessibleHeaderText="Descripton" DataField="Description" />
    <asp:TemplateField HeaderText="Edit" AccessibleHeaderText="Edit">
        <ItemTemplate>
            <asp:HyperLink ID="EditUsername" runat="server" NavigateUrl='<%# Link.ToMemberAdmin(Eval("Username").ToString())%>'
                Text="Edit" />
            <asp:Button ID="DeleteButton" runat="server" Text="Delete Entry" OnClick="DeleteButton_Click"/>
            <asp:HiddenField ID="HiddenUsername" Value='<%#Bind("Username") %>' runat="server" />
            <asp:HiddenField ID="HiddenEmail" Value='<%#Bind("Email") %>' runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView>

任何帮助都将不胜感激。

HiddenField控件将成为GridView呈现的
之一的
的一部分。GridView控件的FindControl只知道它的直接子控件,因为隐藏控件位于该子控件的下两级,所以它无法找到它们。相反,从
发送方开始
,并尝试查找其同级隐藏控件。替换事件处理程序中的两个HiddenControl行,如下所示:

HiddenField Username = (HiddenField) ((Button)sender).Parent.Controls.FindControl("HiddenUsername");
HiddenField Email = (HiddenField) ((Button)sender).Parent.Controls.FindControl("HiddenEmail");

它应该得到您要删除该行数据的值。

只需使用按钮的
CommandArgument

<asp:TemplateField HeaderText="Edit" AccessibleHeaderText="Edit">
    <ItemTemplate>
        <asp:HyperLink ID="EditUsername" runat="server" NavigateUrl='<%# Link.ToMemberAdmin(Eval("Username").ToString())%>'
            Text="Edit" />
        <asp:Button ID="DeleteButton" runat="server" Text="Delete Entry" OnClick="DeleteButton_Click"
            CommandArgument='<%#Eval("Username")+"^"+Eval("Email") %>'/>
    </ItemTemplate>
</asp:TemplateField>

protected void DeleteButton_Click(object sender, EventArgs e)
{
    var btn = sender as Button;
    var args = btn.CommandArgument.Split('^');
    string username = args[0];
    string email = args[1];
    AdminAccess.DeleteMemberApplication(username, email);
}

受保护的void delete按钮\u单击(对象发送方,事件参数e)
{
var btn=发送方作为按钮;
var args=btn.CommandArgument.Split('^');
字符串username=args[0];
字符串email=args[1];
AdminAccess.DeleteMemberApplication(用户名、电子邮件);
}
<asp:TemplateField HeaderText="Edit" AccessibleHeaderText="Edit">
    <ItemTemplate>
        <asp:HyperLink ID="EditUsername" runat="server" NavigateUrl='<%# Link.ToMemberAdmin(Eval("Username").ToString())%>'
            Text="Edit" />
        <asp:Button ID="DeleteButton" runat="server" Text="Delete Entry" OnClick="DeleteButton_Click"
            CommandArgument='<%#Eval("Username")+"^"+Eval("Email") %>'/>
    </ItemTemplate>
</asp:TemplateField>

protected void DeleteButton_Click(object sender, EventArgs e)
{
    var btn = sender as Button;
    var args = btn.CommandArgument.Split('^');
    string username = args[0];
    string email = args[1];
    AdminAccess.DeleteMemberApplication(username, email);
}