我已经在网格视图asp.net的rowdatabound事件中动态创建了我的所有下拉列表和级联下拉列表
我的问题是当我从级联下拉和保存中选择任何值时。
只有第一个值第一次保存
情景是在国家下降假设,
我已经选择了印度,所以如果我选择一些国家说古吉拉特邦,那么各州会填充它们然后如果我按下保存并返回值,保存不是古吉拉特,而是下拉中的第一个值
我必须在每个帖子上调用bind grid
在Rowdatabound事件中
if (value.Equals("Dropdown"))
{
int attributeid = Int32.Parse((e.Row.DataItem as DataRowView).Row["attributeid"].ToString());
string a = (e.Row.DataItem as DataRowView).Row["attributevalue"].ToString();
DropDownList dp = new DropDownList();
dp.ID = attributeid.ToString();
dp.CssClass = "gridtextbox";
dp.EnableViewState = true;
getDropdowns(dp, attributeid);
String attributevalue = (e.Row.DataItem as DataRowView).Row["attributevalue"].ToString();
int cascadingid = Int32.Parse((e.Row.DataItem as DataRowView).Row["cascadingid"].ToString());
if (cascadingid != 0 )
{
dp.SelectedIndexChanged += new EventHandler(Bind_gridchild);
dp.AutoPostBack = true;
}
e.Row.Cells[1].Controls.Add(dp);
我的getdropdown()方法绑定第一次下拉的数据 在selectedIndexchange事件
if (inputtype.Equals("Dropdown"))
{
DropDownList dp = new DropDownList();
dp = (DropDownList)Vendorform.Rows[Int32.Parse(cascading)].FindControl(cascading);
//dp.EnableViewState = true;
// dp.AppendDataBoundItems = true;
string dummy = dp.ID;
using (dbForcastingDataContext db = new dbForcastingDataContext())
{
dp.DataSource = db.usp_vm_etl_getdropdownvalues(Int32.Parse(cascading), Int32.Parse(selectedValue));
dp.DataTextField = "attributeSelectionValue";
dp.DataValueField = "attributeSelectionValue";
dp.DataBind();
// dp.Items.Insert(0,new ListItem("Select", "0"));
}
}
答案 0 :(得分:0)
首先,您需要使用Javascript将所选值存储在隐藏字段中,因为您必须在每个帖子上调用绑定网格 并且在回发后选择的值将是ddl中的第一个值。
<script >
function CallButtonClick() {
var e = document.getElementById("<%=DropDownList1.ClientID %>");
var x = e.options[e.selectedIndex].value;
document.getElementById("HiddenField1").innerText = x;
__doPostBack("<%=DropDownList1.UniqueID %>", "");
}
</script>
在页面中添加HiddenField控件
<asp:HiddenField ID="HiddenField1" runat="server" />
您的代码
using (dbForcastingDataContext db = new dbForcastingDataContext())
{
dp.DataSource = db.usp_vm_etl_getdropdownvalues(Int32.Parse(cascading), Int32.Parse(selectedValue));
dp.DataTextField = "attributeSelectionValue";
dp.DataValueField = "attributeSelectionValue";
dp.DataBind();
if (HiddenField1.Value != null)
{
DropDownList1.SelectedValue = HiddenField1.Value;
}
HiddenField1.Value = string.Empty;
}
的DropDownList。
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" onchange="return CallButtonClick();" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" ></asp:DropDownList>