Header ispostback 上 Gridview 中的 DDL
Header DDL in Gridview on ispostback
我的 gridview 中有一个 header DDL,由于某种原因,它没有保留我选择的值,而是将 gridview 和 header 绑定回“起始位置"
在我的 Priority 的 DDL header 中,我选择了值“99”,但在那之后我的 header 回到了我的 ListItem
(即优先级)
<HeaderTemplate>
<asp:DropDownList ID="ddlPriorityHeader" AutoPostBack="True" AppendDataBoundItems="True" OnSelectedIndexChanged="ddlHeader_SelectedIndexChanged" runat="server">
<asp:ListItem>Priority</asp:ListItem>
</asp:DropDownList>
</HeaderTemplate>
我有一个用于 gridview 的 RowDatabound
,但我什么也没做,然后找到 header 的 DDL,然后绑定 DDL。
protected void gwActivity_RowDataBound(object sender, GridViewRowEventArgs e)
{
//.............. some code.....//
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("SELECT DISTINCT [Priority] FROM [BI_Planning].[dbo].[tblPriority]", con);
con.Open();
ddlPriority.DataSource = cmd.ExecuteReader();
ddlPriority.DataTextField = "Priority";
ddlPriority.DataBind();
}
}
我已经把我的 gridview
放在一个方法中:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridviewActivity();
}
}
难道我每次都为我的 gridview 绑定我的 DDL?我被困在这里....
您需要将 ddlPriority
选定的文本存储在像 ViewState
这样的临时位置,这将在回发之间保持价值。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["PriorityText"] = "Priority";
BindGridviewActivity();
}
}
然后 ddlPriority.DataBind();
将所选文本设置为 ViewState
值
ddlPriority.Items.FindByText(ViewState["PriorityText"].ToString()).Selected = true;
并在您的 ddlHeader_SelectedIndexChanged
中将 ViewState
设置为选定的文本
protected void ddlHeader_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlHeader = (DropDownList)sender;
ViewState["PriorityText"] = ddlHeader.SelectedItem.Text;
}
查看此 complete example 了解更多详情
我的 gridview 中有一个 header DDL,由于某种原因,它没有保留我选择的值,而是将 gridview 和 header 绑定回“起始位置"
在我的 Priority 的 DDL header 中,我选择了值“99”,但在那之后我的 header 回到了我的 ListItem
(即优先级)
<HeaderTemplate>
<asp:DropDownList ID="ddlPriorityHeader" AutoPostBack="True" AppendDataBoundItems="True" OnSelectedIndexChanged="ddlHeader_SelectedIndexChanged" runat="server">
<asp:ListItem>Priority</asp:ListItem>
</asp:DropDownList>
</HeaderTemplate>
我有一个用于 gridview 的 RowDatabound
,但我什么也没做,然后找到 header 的 DDL,然后绑定 DDL。
protected void gwActivity_RowDataBound(object sender, GridViewRowEventArgs e)
{
//.............. some code.....//
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("SELECT DISTINCT [Priority] FROM [BI_Planning].[dbo].[tblPriority]", con);
con.Open();
ddlPriority.DataSource = cmd.ExecuteReader();
ddlPriority.DataTextField = "Priority";
ddlPriority.DataBind();
}
}
我已经把我的 gridview
放在一个方法中:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridviewActivity();
}
}
难道我每次都为我的 gridview 绑定我的 DDL?我被困在这里....
您需要将 ddlPriority
选定的文本存储在像 ViewState
这样的临时位置,这将在回发之间保持价值。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["PriorityText"] = "Priority";
BindGridviewActivity();
}
}
然后 ddlPriority.DataBind();
将所选文本设置为 ViewState
值
ddlPriority.Items.FindByText(ViewState["PriorityText"].ToString()).Selected = true;
并在您的 ddlHeader_SelectedIndexChanged
中将 ViewState
设置为选定的文本
protected void ddlHeader_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlHeader = (DropDownList)sender;
ViewState["PriorityText"] = ddlHeader.SelectedItem.Text;
}
查看此 complete example 了解更多详情