Gridview показывает только один столбец данных
У меня есть выпадающий список(tablenames) если я выберите любое имя таблицы из выпадающего списка, имена столбцов, отображаемых в списке(все колонне название от выбранного dropdwon стол,когда я несколько выберите имя столбца(списка) я хочу для отображения всех данных(выбранных столбцов в ListBox) в табличном виде с несколькими столбцами.
ошибка
в то время как множественный выбор элементов GridView отображается только один столбец(персонализация).помогите мне связать несколько столбцов в виде сетки.
Что я уже пробовал:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; using System.Configuration; namespace entity { public partial class _Default : System.Web.UI.Page { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString); protected void Page_Load(object sender, EventArgs e) { } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { /* if (DropDownList1.SelectedValue == DropDownList1.SelectedItem.Text) { string query = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="+ "DropDownList1.SelectedItem.Text+" ; DataTable dt = _Default.ExecuteQuery(query); ListBox1.Items.Clear(); ListBox1.DataSource = dt; ListBox1.DataBind(); }*/ string query = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='" + DropDownList1.SelectedItem.Text + "'"; using (SqlCommand cmd = new SqlCommand(query)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; using (DataSet ds = new DataSet()) { sda.Fill(ds); ListBox1.DataMember = "COLUMN_NAME"; ListBox1.DataValueField = "COLUMN_NAME"; ListBox1.DataSource = ds.Tables[0]; ListBox1.DataBind(); } } } } protected void Button2_Click(object sender, EventArgs e) { //ListBox1_SelectedIndexChanged(sender, e); if (ListBox1.Items.Count > 0) { DataTable dt = new DataTable(); DataSet ds = new DataSet(); for (int i = 0; i < ListBox1.Items.Count; i++) { if (ListBox1.Items[i].Selected) { string Listbfrom = ListBox1.Items[i].Text; con.Open(); string str = "SELECT " + Listbfrom + " FROM " + DropDownList1.SelectedItem.Text; SqlCommand com = new SqlCommand(str, con); DataSet dsBooking = new DataSet(); SqlDataAdapter dap = new SqlDataAdapter(com); dap.Fill(dsBooking); con.Close(); GridView1.DataSource = dsBooking; GridView1.DataBind(); } } } } /* protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { if (ListBox1.Items.Count > 0) { DataTable dt = new DataTable(); DataSet ds = new DataSet(); for (int i = 0; i < ListBox1.Items.Count; i++) { if (ListBox1.Items[i].Selected) { string Listbfrom = ListBox1.Items[i].Text; con.Open(); string str = "SELECT " + Listbfrom + " FROM " + DropDownList1.SelectedItem.Text; SqlCommand com = new SqlCommand(str, con); DataSet dsBooking = new DataSet(); SqlDataAdapter dap = new SqlDataAdapter(com); dap.Fill(dsBooking); con.Close(); { GridView1.DataSource = dsBooking; GridView1.DataBind(); } } } } } */ } }
[no name]
Что вы подразумеваете под "пока множественного выбора элементов GridView отображается только один столбец(персонализация)." Поделитесь более подробной информацией..
GrpSMK
в списке множественного выбора,GridView с указанием последнего выделенного столбца имя только
[no name]
Все еще не ясно. Но я вижу 1 проблему, поскольку вы привязываете данные к gridview в цикле for, поэтому он привязывает только последний элемент в вашей коллекции.
Попробуйте переместить ниже 2 операторов из цикла for, это должно сработать.
GridView1. DataSource = dsBooking;
Управления gridview1.Привязку();
GrpSMK
да, это моя проблема,как ее решить
[no name]
Как уже было сказано, Когда вы привязываете свои данные к представлению сетки, переместите их из цикла for.
GrpSMK
я пытался, но получал ошибку. вся моя объявленная переменная находится только внутри цикла for.тогда как же его двигать?
[no name]
При заполнении набора данных переместите его из цикла. Каждый раз, когда вы повторяете новый элемент в цикле, вы создаете новый набор данных, заставляя его удерживать только последний элемент в вашем списке и удалять ранее добавленный элемент. Таким образом, в конце концов у вас есть только последний элемент в DS для привязки элемента управления видом сетки.
GrpSMK
да, сделано, большое вам спасибо..