我在页面加载中有这个代码...由于某种原因,下拉列表绑定到db,但是不显示我想绑定的gridview。这可能是什么原因?谢谢!
C#:
SqlConnection conn = new SqlConnection(GetConnectionString());
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT CompanyName, CompanyID FROM Company ORDER BY CompanyName", new SqlConnection(GetConnectionString()));
SqlCommand cmd2 = new SqlCommand("SELECT p.ProjectName AS ProjectName, p.Status FROM Project p, Company c WHERE c.CompanyID = p.CompanyID AND c.CompanyID = 3", new SqlConnection(GetConnectionString()));
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close();
company_list.DataSource = ds;
company_list.DataTextField = "CompanyName";
company_list.DataValueField = "CompanyID";
company_list.DataBind();
company_list.Items.Insert(0, "-- Please Select Company --");
cmd2.Connection.Open();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
sqlAdapter.Fill(ds2);
Gridview1.DataSource = ds2;
Gridview1.DataBind();
cmd2.Connection.Close();
cmd2.Connection.Dispose();
ASP.net:
<asp:gridview ID="Gridview1" runat="server" ShowFooter="True"
AutoGenerateColumns="False" GridLines="None">
<Columns>
<asp:TemplateField HeaderText="Project Name">
<ItemTemplate>
<asp:TextBox Text='<%#DataBinder.Eval(Container.DataItem, "ProjectName") %>' CssClass="input input1" ID="project_name" width="150" runat="server" ReadOnly="True"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:TextBox Text='<%#DataBinder.Eval(Container.DataItem, "Status") %>' CssClass="input input1" ID="status" width="150" runat="server" ReadOnly="True"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>
答案 0 :(得分:0)
看起来您没有为cmd2设置命令类型。你为什么不尝试以下方法: 首先获取列表框的所有数据,然后关闭conn对象。然后这样做:
conn.Open();
SqlCommand cmd2 = new SqlCommand("SELECT p.ProjectName AS ProjectName, p.Status FROM Project p, Company c WHERE c.CompanyID = p.CompanyID AND c.CompanyID = 3", conn);
cmd2.CommandType = CommandType.Text;
SqlDataAdapter sqlAdapter = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
sqlAdapter.Fill(ds2);
Gridview1.DataSource = ds2;
Gridview1.DataBind();
conn.Close();
答案 1 :(得分:0)
GridView没有任何数据。检查查询返回的内容。您可能还想添加EmptyDataTemplate。
顺便提一下,默认的CommandType是Text,所以你不需要指定它,也不需要调用Connection.Open或.Close - DataAdapter.Fill方法为你处理所有这些。哦,你应该真的使用DataReader,并绑定它而不是DataSet。