![](/img/trans.png)
[英]Can move multiple items simultaneously in ListBox up the list, but not down?
[英]Bind gridview with List and then move items up and down?
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
List<Customer> ListOfCustomers = new List<Customer> ListOfCustomers();
ListOfCustomers.Add(new Customer{Id="1", Name="Adam", Surname="Bong"});
ListOfCustomers.Add(new Customer{Id="2", Name="Bob", Surname="Tong"});
ListOfCustomers.Add(new Customer{Id="3", Name="Colin", Surname="Wong"});
ListOfCustomers.Add(new Customer{Id="4", Name="David", Surname="Rong"});
然后我将它绑定到我的 gridview
if(!Page.IsPostback)
{
gridCustomers.DataSource = ListOfCustomers();
gridCustomers.DataBind();
}
我现在想上下移动项目,所以在我的标记上添加了两个按钮。 在我的 RowDataBound 事件下
protected void gridCustomers_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lbMoveUp = (LinkButton)e.Row.FindControl("MoveUpLinkButton");
LinkButton lbMoveDown = (LinkButton)e.Row.FindControl("MoveDownLinkButton");
Customer c = (Customer)e.Row.DataItem;
lbMoveUp.CommandArgument = c.Id.ToString();
lbMoveUp.CommandName = "MoveUp";
lbMoveDown.CommandArgument = c.Id.ToString();
lbMoveDown.CommandName = "MoveDown";
if (c.Id > 0)
{
if (e.Row.RowIndex == 0)
{
lbMoveUp.Visible = false;
}
else if (e.Row.RowIndex >= 1 && e.Row.RowIndex <= gridCustomers.Rows.Count -1)
{
lbMoveUp.Visible = true;
lbMoveDown.Visible = true;
}
else if (e.Row.RowIndex == gridCustomers.Rows.Count)
{
lbMoveDown.Visible = false;
}
}
else
{
lbMoveUp.Visible = false;
lbMoveDown.Visible = false;
}
}
}
我试图实现的是
如果有 1 个项目,则无需显示任何按钮,因为该项目不能上下移动。
如果有 2 个项目,则第一个项目将仅显示向下按钮,第二个(或最后一个)将仅显示向上按钮。
如果有 3 个或更多项目,则第一个项目将仅显示向下按钮,最后一个将仅显示向上按钮,但两者之间的所有项目都将显示两个按钮。
我使用上面的代码遇到了一系列问题,想知道是否有人能指出我正确的方向?
编辑:
<asp:GridView ID="gridCustomers" runat="server" AllowPaging="false"
AllowSorting="false" AutoGenerateColumns="false" Width="100%" ShowHeader="true"
OnRowDataBound="gridCustomers_OnRowDataBound" AlternatingRowStyle-CssClass="alt"
OnRowCommand="gridCustomers_OnRowCommand"
EmptyDataText="Please add a record.">
<Columns>
<asp:TemplateField HeaderText="Move Order">
<ItemTemplate>
<p>
<asp:LinkButton ID="MoveUpLinkButton" runat="server"><img src="...." alt="Up"/></asp:LinkButton>
<asp:LinkButton ID="MoveDownLinkButton" runat="server"><img src="...." alt="Down" /></asp:LinkButton>
</p>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
public partial class _Default : Page
{
List<Customer> listOfCustomers = new List<Customer>();
protected void Page_Load(object sender, EventArgs e)
{
listOfCustomers.Add(new Customer { Id = 1, Name = "Adam", Surname = "Bong" });
listOfCustomers.Add(new Customer { Id = 2, Name = "Bob", Surname = "Tong" });
listOfCustomers.Add(new Customer { Id = 3, Name = "Colin", Surname = "Wong" });
listOfCustomers.Add(new Customer { Id = 4, Name = "David", Surname = "Rong" });
if (!Page.IsPostBack)
{
gridCustomers.DataSource = listOfCustomers;
gridCustomers.DataBind();
}
}
protected void gridCustomers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lbMoveUp = (LinkButton)e.Row.FindControl("lbMoveUp");
LinkButton lbMoveDown = (LinkButton)e.Row.FindControl("lbMoveDown");
Customer c = (Customer)e.Row.DataItem;
lbMoveUp.CommandArgument = c.Id.ToString();
lbMoveUp.CommandName = "MoveUp";
lbMoveDown.CommandArgument = c.Id.ToString();
lbMoveDown.CommandName = "MoveDown";
if (c.Id > 0)
{
if (e.Row.RowIndex == 0)
{
lbMoveUp.Visible = false;
}
else if (e.Row.RowIndex >= 1 && e.Row.RowIndex < listOfCustomers.Count - 1)
{
lbMoveUp.Visible = true;
lbMoveDown.Visible = true;
}
else if (e.Row.RowIndex == listOfCustomers.Count - 1)
{
lbMoveDown.Visible = false;
}
}
else
{
lbMoveUp.Visible = false;
lbMoveDown.Visible = false;
}
}
}
}
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.