如何在用户在 asp.net 3.5 中分页和排序时获取绑定下拉列表
本文关键字:排序 绑定 下拉列表 分页 获取 用户 asp net | 更新日期: 2023-09-27 17:56:33
我有两个下拉列表的网格视图。 因此用户可以在运行时更改下拉列表值。 这是我的网格视图设计代码:
<asp:TemplateField HeaderText="Status" SortExpression="status_id">
<asp:TemplateField HeaderText="Status" SortExpression="status_id">
<HeaderTemplate>
<asp:LinkButton ID="lbut_sortstatus1" runat="server"
CommandArgument="status_id" CommandName="Sort" CssClass="normaltext"
Font-Bold="true" Text="Status"></asp:LinkButton>
<asp:PlaceHolder ID="placeholderstatus1" runat="server"></asp:PlaceHolder>
</HeaderTemplate>
<ItemTemplate>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DDL_StatusList1" runat="server"
DataTextField="status_name" DataValueField="Id" AppendDataBoundItems="true"
AutoPostBack="True"
onselectedindexchanged="DDL_StatusList1_SelectedIndexChanged">
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID ="DDL_StatusList1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</ItemTemplate>
<HeaderStyle CssClass="headinglist_bg" HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
这是我Page_Load代码怎么样:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Panel_View.Visible = false;
Session["SearchtText"] = null;
Session["ColumnName"] = null;
this.FillGrid((String)Session["ColumnName"] ?? null, (String)Session["SearchtText"] ?? null);
Bind_DDL_Column_List();
Bind_DDL_Title();
Bind_DDL_Status();
Bind_DDL_Group();
Bind_DDL_Countries();
}
this.GetData();
}
这是我的下拉列表绑定方法之一,它显示了我如何绑定网格视图下拉列表。
public void Bind_DDL_Group()
{
using (DataClassesDataContext db = new DataClassesDataContext())
{
var query = db.Groups.Select(g=>g).OrderBy(g=>g.Group_name).ToList();
DataSet myDataset = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Group_name", typeof(string));
foreach (var item in query)
{
DataRow dr = dt.NewRow();
dr["Id"] = item.Id.ToString();
dr["Group_name"] = item.Group_name.ToString();
dt.Rows.Add(dr);
}
myDataset.Tables.Add(dt);
DDL_GroupList.DataSource = myDataset;
DDL_GroupList.DataBind();
DropDownList bind_dropdownlist;
foreach (GridViewRow grdRow in GV_ViewUserList.Rows)
{
bind_dropdownlist = (DropDownList)(GV_ViewUserList.Rows[grdRow.RowIndex].Cells[8].FindControl("DDL_GroupList1"));
bind_dropdownlist.DataSource = myDataset;
bind_dropdownlist.DataBind();
}
}
}
但是,在页面加载第一次时,它可以成功工作,但是当用户单击排序或分页时,下拉列表变为空。 我怎么会(!Page.IsPostBack)
Page_Load
绑定它们.
我在这里做错了什么..请帮帮我...
请将下拉绑定代码从 if(!Page.IsPostBack) 条件
因为当转到网格视图中的另一个页面时,页面将回发到服务器
如果(!Page.IsPostBack) 条件将返回 false。
将代码更改为
if (!Page.IsPostBack)
{
Panel_View.Visible = false;
Session["SearchtText"] = null;
Session["ColumnName"] = null;
this.FillGrid((String)Session["ColumnName"] ?? null, (String)Session["SearchtText"] ?? null);
Bind_DDL_Column_List();
Bind_DDL_Title();
Bind_DDL_Countries();
}
Bind_DDL_Status();
Bind_DDL_Group();
this.GetData();