試試這個...
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();
}
}
你要麼使用4個GridView的這是 所有'Visible =「false」'(除了一個)或者你設置'AutoGenerateColumns =「true」'並且綁定數據源(f.e。一個DataTable)在DropDownList的'SelectedIndexChanged'事件處理程序中動態地。 –
我想通過Visible屬性來實現,但我不應該是很好的解決方案。你能幫我動態地綁定數據源來創建嗎? – Smitka
Visible = false實際上**是一種很好的方法,因爲如果在服務器端不可見,服務器控件將不會在客戶端呈現。如果你想在你的GridView中使用TemplateField,那麼這是最簡單和最可靠的方法。 _ [抱歉,現在需要上牀睡覺] @ –