我在详细信息视图中有一个下拉列表,它从一个表中获取其值并将所选值绑定到另一个表。我遇到的问题是,每当回发发生时,我获取ddl值的表将更改回默认读取。这使得所选的值始终更改为null(这是列表的第一个值)
我尝试过把!IsPostBack放在page_load中:
if (!IsPostBack)
{
DetailsView1.DataBind();
}
我确实有第二个ddl依赖于第一个列表但是一个正常工作,它是第一个始终为null并且不会保持所选值的列表。
这是第一个ddl:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True"
AutoPostBack="True" DataSourceID="SQLLEAVECODE" DataTextField="LEAVETYPE"
DataValueField="LEAVECODE" Height="18px" style="text-transform:uppercase;"
onselectedindexchanged="DropDownList1_SelectedIndexChanged"
SelectedValue='<%# bind("reqleavecode") %>' Width="145px">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
我似乎无法弄清楚这一点,我认为这可能与我的绑定有关。
public string lvtype;
public string lvrequest;
private DataSet GetData()
{
ConnectionStringSettingsCollection cssc = ConfigurationManager.ConnectionStrings;
var sql = "SELECT LEAVETYPE, LEAVECODE FROM TESTBWTIME.BWLVTYPE ORDER BY LEAVECODE";
using (iDB2Connection conn = new iDB2Connection(GetConnectionString()))
{
conn.Open();
using (iDB2Command cmd = new iDB2Command(sql, conn))
{
cmd.DeriveParameters();
using (iDB2DataAdapter da = new iDB2DataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
}
}
private String GetConnectionString()
{
ConnectionStringSettingsCollection cssc = ConfigurationManager.ConnectionStrings;
return cssc["connStringNET"].ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
DropDownList ddl1 = (DropDownList)(DetailsView1.FindControl("DropDownList6"));
DropDownList ddl2 = (DropDownList)(DetailsView1.FindControl("DropDownList5"));
DataSet ds = GetData();
if (!Page.IsPostBack)
{
ddl1.DataSource = ds;
ddl1.DataBind();
lvtype = ddl1.SelectedValue;
ddl2.DataSource = ds;
ddl2.DataBind();
lvrequest = ddl2.SelectedValue;
}
else
{
lvtype = ddl1.SelectedValue;
lvrequest = ddl2.SelectedValue;
}
}
答案 0 :(得分:0)
我讨厌同样的问题,我使用以下技术解决它。请根据您的需要修改此代码。基本上,你需要在顶级i-e全局的两个变量。然后,您可以在Postback中获取选定的dropdownlist值,并选择索引更改的事件,如下所示;
public string vendorId;
public string categoryId;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
dropDownListVendor.DataSource = CatalogAccess.GetVendors();
dropDownListVendor.DataBind();
vendorId = dropDownListVendor.SelectedValue;
dropDownListCategory.DataSource = CatalogAccess.GetCategoriesInVendor(vendorId);
dropDownListCategory.DataBind();
categoryId = dropDownListCategory.SelectedValue;
}
else
{
vendorId = dropDownListVendor.SelectedValue;
categoryId = dropDownListCategory.SelectedValue;
}
}
protected void dropDownListVendor_SelectedIndexChanged(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
dropDownListCategory.DataSource = CatalogAccess.GetCategoriesInVendor(vendorId);
dropDownListCategory.DataBind();
}
}