2017-05-31 67 views
0

我有一个页面数据的gridview控件显示完全正常。我添加行中的编辑按钮更新记录,它也工作正常,直到我在下一列添加另一个链接,将其重定向到新页面。 这里是我的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); 
    } 

现在的问题是,当我点击编辑重定向我到另一个,而假设在同一页面中编辑记录。

+0

尝试赋予按钮不同的命令名称,您可以使用switch语句检查“RowCommand”事件处理程序中的按钮命令名称,例如GridView grid = sender作为GridView;开关(e.CommandName){... //编辑或重定向到这里}。 –

回答

1

您Row_Command改成这样

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

非常感谢你对我有用 –

+0

不客气兄弟。 –

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>