我正在创建一个包含一个Dropdownlist和Gridview的网页。从下拉列表动态填充表格并在Gridview中显示
查询是Dropdownlist将包含SQL Server数据库表列表。当我从下拉列表中选择一个表名时,Gridview需要显示整个表数据并能够执行编辑,更新,删除,取消操作。
当我点击编辑Gridview需要显示更新和取消按钮,它更新应更新dropdownlist表,并删除。
我的代码如下这样:
Html页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DataGridView_Sample._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<style type="text/css">
.style1
{
font-weight: bold;
text-decoration: underline;
font-size: x-large;
text-align: center;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<h5 class="style1">
Data Grid View Sample</h5>
</div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="-- Select --" Value=""></asp:ListItem>
<asp:ListItem Text="Emp" Value="Emp"></asp:ListItem>
<asp:ListItem Text="Dept" Value="Dept"></asp:ListItem>
</asp:DropDownList>
<br />
<br />
<b>Grid View:</b>
<br />
<br />
<asp:GridView ID="GridView1" runat="server" Height="181px"
onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating"
Width="518px">
<Columns>
<asp:CommandField ButtonType="Button" ShowEditButton="True" />
</Columns>
<EmptyDataTemplate>
</EmptyDataTemplate>
</asp:GridView>
</form>
</body>
</html>
.aspx页面中的代码:
namespace DataGridView_Sample
{
public partial class _Default : System.Web.UI.Page
{
SqlConnection con = new SqlConnection("Data Source=SHINY-PC\\SQLEXPRESS;Initial Catalog=NRK;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
con.Open();
cmd = new SqlCommand("Select name from sys.tables order by name", con);
da = new SqlDataAdapter(cmd);
da.Fill(ds);
DropDownList1.DataSource = ds;
DropDownList1.DataTextField = "name";
DropDownList1.DataValueField = "name";
DropDownList1.DataBind();
DropDownList1.Items.Insert(0, new ListItem("--Select--", "--Select--"));
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (DropDownList1.SelectedIndex != 0)
{
cmd = new SqlCommand("select * from " + DropDownList1.SelectedItem.Value, con);
con.Open();
da = new SqlDataAdapter(cmd);
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
con.Close();
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
cmd = new SqlCommand("select * from " + DropDownList1.SelectedItem.Value, con);
con.Open();
da = new SqlDataAdapter(cmd);
da.Fill(dt);
GridView1.EditIndex = Convert.ToInt16(e.NewEditIndex);
GridView1.DataSource = dt;
GridView1.DataBind();
con.Close();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
}
}
}
请任何一个可以提供帮助。
在此先感谢。
你有什么问题或错误? – 2013-03-03 18:38:28
如果你问的是你如何预测需要更新的列(我假设并非所有的表都具有相同的列名),那么您需要即时构建更新语句。也许你可以将列信息存储在一个包含2列,表名和列名的表中?然后从这些信息构建更新声明? – Melanie 2013-03-05 22:09:46
代码为GridView1_RowUpdating,GridView1_RowCancelingEdit事件。它使用Dropdownlist动态地将数据从sql表填充到Gridview。 – user2128849 2013-03-06 09:51:49