【问题标题】:Edit button and next page link button on same gridview row同一gridview行上的编辑按钮和下一页链接按钮
【发布时间】:2017-05-31 05:58:45
【问题描述】:

我有一个页面数据上的 gridview 控件显示得非常好。我在行中添加编辑按钮以更新记录,它也可以正常工作,直到我在下一列中添加另一个链接,将我重定向到新页面。 这是我的 Gridview 代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" CellSpacing="1" DataSourceID="SqlDataSource1" GridLines="None" DataKeyNames="issue_id,pro_id" OnRowCommand="GridView1_RowCommand">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:TemplateField HeaderText="Key#" InsertVisible="False" SortExpression="issue_id">
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("issue_id") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="view" CommandArgument ='<%# Eval("issue_id") %>' Text='<%# Eval("issue_id") %>'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="pro_id" HeaderText="pro_id" SortExpression="pro_id" ReadOnly="True" Visible="False" />
                <asp:BoundField DataField="name" HeaderText="Project Name" SortExpression="name" />
                <asp:BoundField DataField="type" HeaderText="Issue Type" SortExpression="type" />
                <asp:BoundField DataField="summary" HeaderText="Summary" SortExpression="summary" />
                <asp:BoundField DataField="mem_id" HeaderText="Member Name" SortExpression="mem_id" />
                <asp:TemplateField HeaderText="Priority" SortExpression="priority">
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server">
                            <asp:ListItem>Major</asp:ListItem>
                            <asp:ListItem>Critical</asp:ListItem>
                            <asp:ListItem>Minor</asp:ListItem>
                            <asp:ListItem>Cosmetic</asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("priority") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="status" HeaderText="Status" SortExpression="status" />
                <asp:BoundField DataField="impact" HeaderText="Impact" SortExpression="impact" />
                <asp:BoundField DataField="Expr1" HeaderText="Submit Date" ReadOnly="True" SortExpression="Expr1" />
            </Columns>
            <FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
            <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
            <RowStyle BackColor="#DEDFDE" ForeColor="Black" />
            <SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#F1F1F1" />
            <SortedAscendingHeaderStyle BackColor="#594B9C" />
            <SortedDescendingCellStyle BackColor="#CAC9C9" />
            <SortedDescendingHeaderStyle BackColor="#33276A" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:IHDConnectionString %>" 
            SelectCommand="SELECT issue.issue_id, issue.pro_id, project.name, issue.type, issue.summary, issue.mem_id, issue.priority, issue.status, issue.impact, CONVERT (date, GETDATE()) AS Expr1 FROM issue INNER JOIN project ON issue.pro_id = project.pro_id" 
            UpdateCommand="UPDATE [issue] SET  [mem_id] = @mem_id, [priority] = @priority, [status] = @status WHERE [issue_id] = @issue_id AND [pro_id] = @pro_id" 

            <UpdateParameters>
                <asp:Parameter Name="mem_id" Type="String" />
                <asp:Parameter Name="priority" Type="String" />
                <asp:Parameter Name="status" Type="String" />
                <asp:Parameter Name="issue_id" Type="Int32" />
                <asp:Parameter Name="pro_id" Type="String" />
            </UpdateParameters>
        </asp:SqlDataSource>

这是我的重定向页面控件

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        Response.Redirect("~/redirect.aspx?view=" + e.CommandArgument);
    }

现在的问题是,当我点击编辑时,它会将我重定向到另一个页面,而它应该在同一页面中编辑记录。

【问题讨论】:

  • 尝试为按钮指定不同的命令名称,您可以使用 switch 语句检查 RowCommand 事件处理程序中的按钮命令名称,例如GridView grid = sender as GridView; switch (e.CommandName) { ... // edit or redirect here }.

标签: c# asp.net gridview


【解决方案1】:

将您的 Row_Command 更改为此

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName.ToString() == "view")
    {
        Response.Redirect("~/redirect.aspx?view=" + e.CommandArgument);
    }
}

【讨论】:

    【解决方案2】:

    我建议您在需要链接时使用链接,您无需回发即可“重定向”用户:

     <asp:TemplateField HeaderText="Key#" InsertVisible="False" SortExpression="issue_id">
        <EditItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("issue_id") %>'></asp:Label>
        </EditItemTemplate>
        <ItemTemplate>
            <a href='redirect.aspx?view=<%# Eval("issue_id") %>'><%# Eval("issue_id") %></a>            
        </ItemTemplate>
    </asp:TemplateField>
    

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 2020-11-11
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多