在同一gridview行上编辑按钮和下一页链接按钮

时间:2017-05-31 05:58:46

标签: c# asp.net 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);
    }

现在问题是,当我点击编辑时,我将其重定向到另一个,而我们想要在同一页面中编辑记录。

2 个答案:

答案 0 :(得分:1)

将Row_Command更改为此

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

答案 1 :(得分:0)

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

 <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>