2012-06-01 134 views
0

我創建了web應用程序。我添加下拉列表。我連接列表與名稱類別的名稱。例如1,2,3.當我選擇值1時,應該創建填充表1中的數據的網格視圖。當我選擇2創建填充表2中的數據的網格視圖時。我連接SQL數據庫中的表。 PrimaryKey類別ID,外鍵1,外鍵2。選擇dropdownlist值並顯示來自不同表格的gridview ASP.NET

我知道如何通過在下拉列表中選擇值來填充網格視圖,但是從一個表中的值。在這種情況下,我有4張桌子,我不知道如何實現這一點。有沒有人可以幫助我?通過一些教程,或一段代碼?感謝

+0

你要麼使用4個GridView的這是 所有'Visible =「false」'(除了一個)或者你設置'AutoGenerateColumns =「true」'並且綁定數據源(f.e。一個DataTable)在DropDownList的'SelectedIndexChanged'事件處理程序中動態地。 –

+0

我想通過Visible屬性來實現,但我不應該是很好的解決方案。你能幫我動態地綁定數據源來創建嗎? – Smitka

+0

Visible = false實際上**是一種很好的方法,因爲如果在服務器端不可見,服務器控件將不會在客戶端呈現。如果你想在你的GridView中使用TemplateField,那麼這是最簡單和最可靠的方法。 _ [抱歉,現在需要上牀睡覺] @ –

回答

1

試試這個...

aspx頁面:

<body> 
    <form runat="server"> 
    <asp:DropDownList runat="server" ID="ddlDb" AutoPostBack="True" OnSelectedIndexChanged="ddlDb_SelectedIndexChanged"> 
     <asp:ListItem Text="-- Select --" Value=""></asp:ListItem> 
     <asp:ListItem Text="Students" Value="Students"></asp:ListItem> 
     <asp:ListItem Text="Classes" Value="Classes"></asp:ListItem> 
    </asp:DropDownList> 
    <asp:GridView ID="GridView1" runat="server"> 
    </asp:GridView> 
    </form> 
</body> 

aspx.cs:

protected void ddlDb_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(ddlDb.SelectedValue)) 
    { 
     var dbPath = Server.MapPath(@"\App_Data\Database1.mdf"); 
     var scon = "Data Source=.\\SQLEXPRESS;AttachDbFilename='" + dbPath + "';Integrated Security=True;User Instance=True"; 
     var cmd = "select * from " + ddlDb.SelectedValue; 

     var dt = new DataTable(); 
     var da = new SqlDataAdapter(cmd, scon); 
     da.Fill(dt); 

     GridView1.DataSource = dt; 
     GridView1.DataBind();     
    } 
} 

enter image description here

enter image description here

+0

Ray Cheng非常感謝你,你明白我的問題並找到優雅的解決方案。我無法解決我的問題,但現在效果很好。 – Smitka

相關問題