Проблемы подсчета динамических строк таблицы (получение выпадающих значений)
Привет, у меня есть проблема с получением динамических значений выпадающего списка, я делаю несколько строк в динамической таблице, где я делаю больше выпадающих списков, где есть каскадные выпадающие списки, поэтому при выборе в первом выпадающем списке затем заполните выпадающее число 2 теми данными, которые подходят. Моя проблема заключается в том, чтобы сделать его динамическим, чтобы он работал на всех строках таблицы, а не только на первой строке. И попробовал сосчитать строки, но не может заставить его работать.
Мне нужно добавить идентификатор в выпадающий список в методе seleceted index change, чтобы он работал со всеми выпадающими списками
С#
Создавать
private void CreateDynamicTable() { PlaceHolder1.Controls.Clear(); // Fetch the number of Rows and Columns for the table // using the properties int tblRows = Rows; int tblCols = Columns; // Create a Table and set its properties Table tbl = new Table(); tbl.ID = "Table1"; // Add the table to the placeholder control PlaceHolder1.Controls.Add(tbl); // Now iterate through the table and add your controls XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("./xmlReBikeInfo/InfoBikeResponse.xml")); for (int i = 0; i < Rows; i++) { TableRow tr = new TableRow(); for (int j = 0; j < tblCols; j++) { TableCell tc = new TableCell(); TextBox txtBox = new TextBox(); txtBox.ID = "txtBox:" + i + " " + "ColumnNo:" + " " + j; txtBox.EnableViewState = true; // Add the control to the TableCell tc.Controls.Add(txtBox); DropDownList ddl = new DropDownList(); ddl.ID = "ddlBike_" + i; ddl.CssClass = "dropdown"; ddl.AutoPostBack = true; ddl.EnableViewState = true; ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged); XmlNodeList nodeList = doc.SelectNodes("InfoBikeResponse/BikeTypes/BikeType"); foreach (XmlNode node in nodeList) { ddl.Items.Add(new ListItem(node["TypeName"].InnerText + "")); ddl.ClearSelection(); } DropDownList ddlSize = new DropDownList(); ddlSize.CssClass = "dropdown"; ddlSize.ID = "ddlSize_" + i; ddlSize.Visible = false; DropDownList ddlHjl = new DropDownList(); ddlHjl.CssClass = "dropdown"; ddlHjl.ID = "Hjelm" + i; ddlHjl.Items.Add(new ListItem("Hjelm", "0")); ddlHjl.Visible = false; XmlNodeList nodeListHjl = doc.SelectNodes("InfoBikeResponse/BikeHelmets/HelmetType"); foreach (XmlNode node in nodeListHjl) { ddlHjl.Items.Add(new ListItem(node["HelmetId"].InnerText + HttpUtility.HtmlDecode(" ") + "" + HttpUtility.HtmlDecode(" ") + node["HelmetName"].InnerText + "")); ddlHjl.ClearSelection(); } DropDownList ddlTil = new DropDownList(); ddlTil.CssClass = "dropdown"; ddlTil.ID = "Tilbehor" + i; ddlTil.Items.Add(new ListItem("Tilbehør", "0")); ddlTil.Visible = false; XmlNodeList nodeListTil = doc.SelectNodes("InfoBikeResponse/BikeAccessories/Accessorie"); foreach (XmlNode node in nodeListTil) { ddlTil.Items.Add(new ListItem(node["AccessorieId"].InnerText + HttpUtility.HtmlDecode(" ") + "" + HttpUtility.HtmlDecode(" ") + node["AccessorieName"].InnerText + "")); ddlTil.ClearSelection(); } tc.Controls.Add(ddl); tc.Controls.Add(ddlHjl); tc.Controls.Add(ddlTil); tc.Controls.Add(ddlSize); // Add the TableCell to the TableRow tr.Cells.Add(tc); } // Add the TableRow to the Table tbl.Rows.Add(tr); } // This parameter helps determine in the LoadViewState event, // whether to recreate the dynamic controls or not } ViewState["dynamictable"] = true;
Некоторые изменения индекса
protected void ddl_SelectedIndexChanged(object sender, EventArgs e) { //PlaceHolder1.Controls.Clear(); XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("./xmlReBikeInfo/InfoBikeResponse.xml")); DropDownList ddl = (DropDownList)PlaceHolder1.FindControl("ddlBike_0"); //Use Request objects for getting the previous data of the dynamic textbox string biketype = ddl.SelectedValue; lbl.Text = biketype.ToString(); DropDownList ddlSize = (DropDownList)PlaceHolder1.FindControl("ddlSize_0"); ddlSize.CssClass = "dropdown"; ddlSize.ID = "ddlSize"; ddlSize.Visible = false; XDocument xdoc = XDocument.Load(Server.MapPath("./xmlReBikeInfo/InfoBikeResponse.xml")); var bikeSizes = xdoc.Descendants("BikeType") .Where(x => x.Element("TypeName").Value == biketype) .SelectMany(x => x.Descendants("SizeName").Select(y => y.Value)) .ToList(); if (biketype == "Sport Bike") { ddlSize.Items.Add(new ListItem("Højde tester", "0")); foreach (string s in bikeSizes) { ddlSize.Items.Add(new ListItem(s + "")); ddlSize.ClearSelection(); lbl.Text = s.ToString(); } ddlSize.Visible = true; } if (biketype == "Classic") { ddlSize.Items.Add(new ListItem("Højde tester", "0")); foreach (string s in bikeSizes) { ddlSize.Items.Add(new ListItem(s + "")); ddlSize.ClearSelection(); lbl.Text = s.ToString(); } ddlSize.Visible = true; } }
Что я уже пробовал:
Google, подсчитывая строки и пытаясь установить счетчик
Maciej Los
Извините, но ваша проблема не ясна. Что вы имеете в виду, говоря: "Аве пытался сосчитать ряды, но не может заставить его работать"?
Что такое "строка", когда вы имеете дело с xml-данными? Каков желаемый результат?
Martin Lauritsen
Я все исправил, так что у меня больше нет этой проблемы :)