一个 "疑问" , 纳闷 !
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script language="C#" runat="server">
public void Search_Click(Object sender, EventArgs E)
{
// 连接到本地计算机的eShops数据库
SqlConnection cn=new SqlConnection("Data Source=localhost;" +
"Integrated Security=SSPI;Initial Catalog=eShops");
// 构造SQL语句,该语句用于查询某个客户的订购情况
String strSQL="select Orders.OrderId,ProductName,Qty,Price "+
"from Customers,Orders,Products "+
"where CustName=@CustName and Customers.CustId=Orders.CustId "+
"and Orders.ProductId=Products.ProductId "+
"order by Orders.Orderid";
// 创建Command对象cm
SqlCommand cm=new SqlCommand(strSQL,cn);
// 添加一个参数
cm.Parameters.Add(new SqlParameter("@CustName",SqlDbType.NVarChar,12));
// 给参数赋值
cm.Parameters["@CustName"].Value=CustName.Text;
// 打开连接
cn.Open();
// 执行ExecuteReader()方法
SqlDataReader dr=cm.ExecuteReader();
// 将DataReader对象绑定到DataGrid控件
********* 问题在这 *************************************
dgCust.DataSource=dr;
dgCust.DataBind();
**********************************************************
// 关闭连接
cn.Close();
}
</script>
我的问题:
dgCust 不用先声明的吗 ?
-----------------------------
也是以上例子里的 , 这里就有 NEW 一个 ?
// 创建Command对象cm
SqlCommand cm=new SqlCommand(strSQL,cn);
问题点数:20、回复次数:12Top
1 楼yunhi()回复于 2002-05-21 04:34:05 得分 0
你的问题:
// 将DataReader对象绑定到DataGrid控件
********* 问题在这 *************************************
dgCust.DataSource=dr;
dgCust.DataBind();
**********************************************************
这里需要的是DataSet;你要新建一个 SqlDataAdapter对象,然后调用它的Fill方法填充DataSet。
dgCust 不用先声明的吗 ?
因为在你的页面里你不是已经定义了一个DataGrid控件dgCust嘛。
Top
2 楼saucer(思归)回复于 2002-05-21 04:53:46 得分 0
1. you are using SqlDataReader as the data source for the datagrid, no need for a SqlDataAdapter
2. dgCust is defined here:
<datagrid id="dgCust" runat="server">Top
3 楼lypdk()回复于 2002-05-21 22:32:28 得分 0
TO: yunhi(yunhi)
我没有定义呀 ? 所有的语句都在上面了 , 没有呀 。
Top
4 楼mmkk()回复于 2002-05-21 22:40:44 得分 0
dgCust并不是不要声明,应该是DataGrid控件的ID,如果没有这个ID,编译肯定会报错,不可能通过的Top
5 楼yunhi()回复于 2002-05-21 23:33:33 得分 0
如果你的程序编译通过的话,你不可能没有定义的呀,那你的dgCust从哪里来?它又何来DataGrid类的DataSource属性和DataBind()方法?Top
6 楼windfun(小宝.NET)回复于 2002-05-21 23:39:02 得分 0
dgCust是DataGird控件的ID,你应该还有代码没贴出来,控件ID在页面代码是不用声明的Top
7 楼lypdk()回复于 2002-05-22 02:26:17 得分 0
全部的代码:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script language="C#" runat="server">
public void Search_Click(Object sender, EventArgs E)
{
// 连接到本地计算机的eShops数据库
SqlConnection cn=new SqlConnection("Data Source=localhost;" +
"Integrated Security=SSPI;Initial Catalog=eShops");
// 构造SQL语句,该语句用于查询某个客户的订购情况
String strSQL="select Orders.OrderId,ProductName,Qty,Price "+
"from Customers,Orders,Products "+
"where CustName=@CustName and Customers.CustId=Orders.CustId "+
"and Orders.ProductId=Products.ProductId "+
"order by Orders.Orderid";
// 创建Command对象cm
SqlCommand cm=new SqlCommand(strSQL,cn);
// 添加一个参数
cm.Parameters.Add(new SqlParameter("@CustName",SqlDbType.NVarChar,12));
// 给参数赋值
cm.Parameters["@CustName"].Value=CustName.Text;
// 打开连接
cn.Open();
// 执行ExecuteReader()方法
SqlDataReader dr=cm.ExecuteReader();
// 将DataReader对象绑定到DataGrid控件
dgCust.DataSource=dr;
dgCust.DataBind();
// 关闭连接
cn.Close();
}
</script>
<body style="font: 10pt verdana">
<form runat="server">
客户名:
<asp:TextBox id="CustName" runat="server" />
<asp:RequiredFieldValidator id="RFV"
ControlTOValidate="CustName"
Display="dynamic" runat="server">*
</asp:RequiredFieldValidator>
<asp:Button text="查询" OnClick="Search_Click" runat="server" />
<br><br>
<asp:DataGrid id="dgCust" runat="server"
Width="700" BackColor="#ccccff"
BorderColor="black" ShowFooter="false"
CellPadding=3 CellSpacing="0"
Font-Name="Verdana" Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AutoGenerateColumns="false"
MaintainState="false">
<Columns>
<asp:BoundColumn HeaderText="订单号" DataField="OrderId" />
<asp:BoundColumn HeaderText="产品名" DataField="ProductName" />
<asp:BoundColumn HeaderText="数量" DataField="Qty" />
<asp:BoundColumn HeaderText="单价(元)" DataField="Price" />
</Columns>
</asp:DataGrid>
</form>
</body>
</html>Top
8 楼OMyDoG(-:)回复于 2002-05-22 08:11:01 得分 0
<asp:DataGrid id="dgCust" runat="server"
///////////这里就定义了id="dgCust"了Top
9 楼yunhi()回复于 2002-05-22 09:42:46 得分 0
<asp:DataGrid id="dgCust" runat="server"
......
</asp:DataGrid>
这段code不就是定义了一个ID号为dgCust的DataGrid控件嘛。Top
10 楼lypdk()回复于 2002-05-22 11:43:57 得分 0
啊 !
申明在调用之后 ? 不用先声明的吗 ?Top
11 楼renewdbh(小胖)回复于 2002-05-22 17:37:28 得分 0
程序先执行<body></body>中的代码,后执行<script></script>Top
12 楼renewdbh(小胖)回复于 2002-05-22 17:49:00 得分 20
你若将前台界面与后台代码分离,那就很容易明白啦Top




