在ASP.NET GridView中向上和向下移动行

问题描述:

我正在尝试学习通过按向上按钮或向下按钮向上或向下移动列表中的一行。在ASP.NET GridView中向上和向下移动行

下面是我的ASP.NET。

<asp:GridView ID="gridChecks" runat="server" ShowFooter="true" AutoGenerateColumns="false" OnRowCreated="GridChecks_RowCreated" OnRowCommand="gridChecks_RowCommand" Style="margin: 0 auto; width: 850px; margin-top: 10px" CssClass="tableGlobalGenericStyle tableGlobalOption_AlternatingRow"> 
         <Columns> 
          <asp:BoundField DataField="RowNumber" HeaderText="Check ID" HeaderStyle-Width="80px" /> 
          <asp:TemplateField HeaderText="Check Title" HeaderStyle-Width="250px"> 
           <ItemTemplate> 
            <asp:TextBox ID="txtCheckTitle" runat="server" Width="240px"></asp:TextBox> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Effective From"> 
           <ItemTemplate> 
            <asp:textbox ID="txtDateFrom" runat="server" Width="150px"></asp:textbox> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Effective To"> 
           <ItemTemplate> 
            <asp:textbox ID="txtDateTo" runat="server" Width="150px"></asp:textbox> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Actions" HeaderStyle-Width="200px"> 
           <ItemTemplate> 
            <asp:Button ID="btnMoveUp" runat="server" CommandName="Up" CssClass="imageButton imageButton_UpArrow imageButton_Image" ToolTip="Click to add move check up the list" /> 
            <asp:Button ID="btnMoveDown" runat="server" CommandName="Down" CssClass="imageButton imageButton_DownArrow imageButton_Image" ToolTip="Click to add move check down the list" /> 
            <asp:Button ID="btnRemoveCheck" runat="server" OnClick="BtnRemove_Click" CssClass="imageButton imageButton_Remove imageButton_Image" ToolTip="Click to add remove check from the list" /> 
           </ItemTemplate> 
           <FooterStyle HorizontalAlign="Center" /> 
           <FooterTemplate> 
            <asp:Button ID="btnAddCheck" runat="server" OnClick="BtnAddCheck_Click" CssClass="imageButton imageButton_Add" Text="Add Check" ToolTip="Click to add new check to the list" /> 
           </FooterTemplate> 
          </asp:TemplateField> 
         </Columns> 
        </asp:GridView> 

我现在有一个删除按钮,从该行中删除它,并保留数量顺序ID。

删除按钮C#

protected void BtnRemove_Click(object sender, EventArgs e) 
{ 
    Button lb = (Button)sender; 
    GridViewRow gvRow = (GridViewRow)lb.NamingContainer; 
    int rowID = gvRow.RowIndex; 
    if (ViewState["CurrentTable"] != null) 
    { 
     DataTable dt = (DataTable)ViewState["CurrentTable"]; 
     if (dt.Rows.Count > 1) 
     { 
      if (gvRow.RowIndex < dt.Rows.Count - 1) 
      { 
       //Remove the Selected Row data and reset row number 
       dt.Rows.Remove(dt.Rows[rowID]); 
       ResetRowID(dt); 
      } 
     } 

     //Store the current data in ViewState for future reference 
     ViewState["CurrentTable"] = dt; 

     //Re bind the GridView for the updated data 
     gridChecks.DataSource = dt; 
     gridChecks.DataBind(); 
    } 

    //Set Previous Data on Postbacks 
    SetPreviousData(); 
} 

我试图做同样的事情,但在列表中向上或向下移动的行,也保留了数字序列ID。

我有一个了解会涉及在GridView的指标,我需要重新绑定一次。

有人可以指导我用一个例子正确的方向。谢谢!!

+0

的可能的复制[如何移动的行在GridView的上下?](https://*.com/questions/7994371/how-to-move-the-rows-in-the-gridview-up-and-down) – AsifAli72090

+0

您将需要保存更改为数据库。否则,它不会坚持更改。 – Win

按照你的例子,给指数是要交换的第一个两行的索引:

从第一行创建一个新的行

var firstRow = dt[index]; 
var newRow = dt.NewRow(); 

填入NEWROW数据

for (int i=0; i<dt.Colums.Count(); i++) 
    newRow[i]=firstRow[i] 

删除FIRSTROW

dt.RemoveAt[index]; 

现在,第二排具有的rowIndex =指数,所以我们增加新行后

dt.InsertAt[newRow, index + 1]; 

这样,我们通过1个位置拉起第二排