Различные выпадающие списки с одним и тем же источником дают одно и то же значение. Как справиться?
Я связал три выпадающих списка с одним и тем же адаптером данных oledb. этот oledbdataadapter заполняет три различные таблицы данных, которые я в конечном итоге использую для заполнения трех выпадающих списков. Но когда я получаю доступ к трем раскрывающимся значениям в кнопке отправки, все три раскрывающихся списка дают один и тот же выбранный элемент, даже если я выбрал три разных варианта в раскрывающихся списках. Кто-нибудь может помочь?
вот мой код:-
//select command cmdExcel.CommandText = "Select * from [" + SheetName + "]"; //oda - oledbdataadapter oda.SelectCommand = cmdExcel; oda.Fill(dt_Temp); DataTable dt_costcode = new DataTable(); oda.Fill(dt_costcode); DataTable dt_desc = new DataTable(); oda.Fill(dt_desc); DataTable dt_unit = new DataTable(); oda.Fill(dt_unit); connExcel.Close(); ViewState["TempImport"] = dt_Temp; List<CostColumns> list_costCode = Columns(dt_costcode); Bind_ddlCostCode(list_costCode); List<CostColumns> list_desc = Columns(dt_desc); Bind_ddlDescription(list_desc); List<CostColumns> list_unit = Columns(dt_unit); Bind_ddlUnitofMeasure(list_unit);
вот код для привязки выпадающих списков:-
<public void Bind_ddlCostCode(List<CostColumns> list_costCode) { foreach (CostColumns costcol in list_costCode.ToList()) { if (costcol.ColumnType == "System.String") { ddlCostCodeNumber.Items.Add(new ListItem(costcol.Columns, costcol.ColumnType)); } } ddlCostCodeNumber.DataBind(); ddlCostCodeNumber.Items.Insert(0, new ListItem("--Select CostCode--", "0")); } public void Bind_ddlDescription(List<CostColumns> list_desc) { foreach (CostColumns costcol in list_desc.ToList()) { if (costcol.ColumnType == "System.String") { ddlDescription.Items.Add(new ListItem(costcol.Columns, costcol.ColumnType)); } } ddlDescription.DataBind(); ddlDescription.Items.Insert(0, new ListItem("--Select Desc.--", "0")); } //(Same code for Bind_ddlUnitofMeasure(list_unit)) public List Columns(DataTable dt) { List list=new List(); CostColumns CC ; foreach (DataColumn col in dt.Columns) { CC = new CostColumns(); CC.Columns=Convert.ToString(col.ColumnName); CC.ColumnType=Convert.ToString(col.DataType); list.Add(CC); } return list; }
И вот тут все идет не так:-
protected void Btn_ImportRecords_Click(object sender, EventArgs e) { DataTable dt_Temp= (DataTable)ViewState["TempImport"]; DataTable dt_Import = new DataTable(); Int32 i = costCodeNo(); string ccn = ddlCostCodeNumber.SelectedItem.Text;//gives same selected option(CostCodeNumber) string desc = ddlDescription.SelectedItem.Text;//gives same selected option string unit = ddlUnitofMeasure.SelectedItem.Text;//gives same selected option dt_Import.Columns.Add(new DataColumn("CostCodeNo", typeof(Int32))); dt_Import.Columns.Add(new DataColumn(ddlCostCodeNumber.SelectedItem.Text, typeof(string))); dt_Import.Columns.Add(new DataColumn(ddlDescription.SelectedItem.Text, typeof(string)));//throws exception that dt_Import already has same column name }
Что я уже пробовал:
Я пробовал создавать разные таблицы данных для разных выпадающих списков, но пока безуспешно.
Karthik_Mahalingam
покажите код для Столбцы функция и выберите запрос
sam_matte
Я обновил код, пожалуйста, посмотрите
Karthik_Mahalingam
сколько там листов
sam_matte
пока есть только один лист.
Karthik_Mahalingam
тогда данные будут одинаковыми, так как вы используете один и тот же набор данных для всех ddl
sam_matte
Если вы посмотрите на первый раздел кода, то увидите, что я заполнил различные таблицы данных oledbdataadapter. Я не использую один и тот же datatable для заполнения выпадающих списков.
Karthik_Mahalingam
Но адаптер тот же самый
sam_matte
Найти решение. До сих пор я использовал списки для заполнения выпадающих списков, вместо этого я использовал таблицы данных напрямую. Кроме того, вместо того, чтобы вставлять типы столбцов в качестве selectedvalue выпадающих списков, Я заменил тип столбца именами столбцов. Новые изменения были приняты незамедлительно. В любом случае, спасибо за ваши усилия, Картик.
Karthik_Mahalingam
крутой