在ASP.NET中,GridView控件是一个非常强大的工具,它允许开发者以表格的形式展示数据。本文将通过一个简单的示例,展示如何使用GridView控件进行数据绑定,以及如何实现行的上移和下移功能。
首先,需要创建一个ASP.NETWeb Forms应用程序,并在其中添加一个GridView控件。GridView控件可以通过拖放的方式添加到页面上,也可以通过代码动态创建。在本示例中,将使用拖放的方式添加GridView控件。
接下来,需要为GridView控件绑定数据。在ASP.NET中,可以使用DataTable对象来存储数据,并将其绑定到GridView控件。以下是一个简单的示例代码,展示了如何为GridView控件绑定数据:
public partial class _Default : System.Web.UI.Page
{
public DataTable dt = new DataTable();
public DataTable dtnew = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bindgrid(); // Bind Gridview with sample data
}
}
/// <summary>
/// Bind some sample data to GridView
/// </summary>
private void bindgrid()
{
dt.Columns.Add("Fname");
dt.Columns.Add("Lname");
dt.Columns.Add("Job");
dt.Columns.Add("Index");
DataRow dr;
dr = dt.NewRow();
dr[0] = "ONE";
dr[1] = "User One";
dr[2] = "Manager";
dr[3] = 0;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "TWO";
dr[1] = "User Two";
dr[2] = "Project Lead";
dr[3] = 1;
dt.Rows.Add(dr);
// ... 更多数据绑定代码 ...
dt.AcceptChanges();
Gridviewselectbus.DataSource = dt;
Gridviewselectbus.DataBind();
Session["dt"] = dt;
}
}
在上述代码中,首先创建了一个DataTable对象,并为其添加了四个列:Fname、Lname、Job和Index。然后,创建了一行数据,并将其添加到DataTable对象中。最后,将DataTable对象绑定到GridView控件,并调用DataBind方法来更新GridView控件的显示。
接下来,需要实现行的上移和下移功能。在GridView控件中,可以通过处理RowCommand事件来实现这一功能。以下是一个简单的示例代码,展示了如何实现行的上移和下移功能:
protected void Gridviewselectbus_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Up")
{
int index = Convert.ToInt32(e.CommandArgument);
if (index == 0)
{
Label1.Text = "You Cant move record Up";
Label1.Visible = true;
return;
}
dt = (DataTable)Session["dt"];
int value = Convert.ToInt32(dt.Rows[index]["Index"].ToString());
dt.Rows[index]["Index"] = Convert.ToInt32(index) - 1;
dt.Rows[index - 1]["Index"] = value;
dt.DefaultView.Sort = "Index";
dt.AcceptChanges();
dtnew = dt.Copy();
Gridviewselectbus.DataSource = dt;
Gridviewselectbus.DataBind();
dt.AcceptChanges();
// ... 更新Session中的数据 ...
Label1.Text = string.Empty;
}
if (e.CommandName == "Down")
{
int index = Convert.ToInt32(e.CommandArgument);
dt = (DataTable)Session["dt"];
if (Convert.ToInt16(index + 1) == dt.Rows.Count)
{
Label1.Text = "You Cant move record down";
Label1.Visible = true;
return;
}
int value = Convert.ToInt32(dt.Rows[index]["Index"].ToString());
dt.Rows[index]["Index"] = Convert.ToInt32(dt.Rows[index]["Index"].ToString()) + 1;
dt.Rows[index + 1]["Index"] = value;
dt.AcceptChanges();
dt.DefaultView.Sort = "Index";
dt.AcceptChanges();
dtnew = dt.Copy();
Gridviewselectbus.DataSource = dt;
Gridviewselectbus.DataBind();
dt.AcceptChanges();
// ... 更新Session中的数据 ...
Label1.Text = string.Empty;
}
}
在上述代码中,首先检查CommandName属性,以确定用户是否点击了上移或下移按钮。如果是上移按钮,将当前行的索引减1,并将上一行的索引加1。如果是下移按钮,将当前行的索引加1,并将下一行的索引减1。然后,更新DataTable对象,并重新绑定GridView控件以更新显示。
最后,需要在GridView控件中添加上移和下移按钮。以下是一个简单的示例代码,展示了如何在GridView控件中添加上移和下移按钮:
<asp:GridView ID="Gridviewselectbus" runat="server" Height="87px" Width="771px" HorizontalAlign="Center" AutoGenerateColumns="False" OnRowCommand="Gridviewselectbus_RowCommand" CellPadding="4" ForeColor="#333333" GridLines="None">
<RowStyle BorderColor="#999999" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" BackColor="#EFF3FB" />
<EmptyDataRowStyle BorderColor="#999999" />
<Columns>
<asp:BoundField DataField="Lname" HeaderText="Lname" SortExpression="Lname" />
<asp:BoundField DataField="Fname" HeaderText="Fname" SortExpression="Fname" />
<asp:BoundField DataField="Job" HeaderText="Job" SortExpression="Job" />
<asp:BoundField DataField="Index" HeaderText="Index" SortExpression="Index" />
<asp:TemplateField>
<HeaderStyle Width="3%" />
<ItemTemplate>
<asp:ImageButton ID="ibtnUp" runat="server" border="0" CommandArgument='<%# Eval("index") %>' CommandName="Up" Height="18px" ImageUrl="images/btn_GreenUP.png" Width="18px" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyle Width="3%" />
<ItemTemplate>
<asp:ImageButton ID="ibtnDown" runat="server" border="0" CommandArgument='<%# Eval("index") %>' CommandName="Down" Height="18px" ImageUrl="images/btn_GreenDown.png" Width="18px" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
在上述代码中,为GridView控件添加了两个TemplateField字段,分别用于显示上移和下移按钮。在每个TemplateField字段中,使用ImageButton控件来创建按钮,并设置其CommandName属性为"Up"或"Down",以便于在RowCommand事件中进行处理。
通过上述步骤,可以实现一个具有上移和下移功能的GridView控件。用户可以通过点击按钮来调整行的顺序,从而实现数据的动态排序。