c#数据绑定问题。

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:29:11
代码如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat=server>
DataSet dstProducts;

void Page_Load(Object sender , EventArgs e)
{
SqlConnection conNorthwind;
SqlDataAdapter dadProducts;

// Grab Products Table
dstProducts = new DataSet();
conNorthwind = new SqlConnection( @"Server=localhost;Database=Northwind;Integrated Security=SSPI" );
dadProducts = new SqlDataAdapter( "Select Top 10 * from Products", conNorthwind );
dadProducts.Fill( dstProducts, "Products" );

// Bind to DataGrid
dgrdProducts.DataSource = dstProducts;
DataBind();
}

string OrderTotal() {
DataTable dtblProducts;
int intSumTotal;

dtblProducts = dstProducts.Tables[ "Products" ];
intSumTotal

DataBind()的作用就是执行页面的数据绑定,因为你的 label上调用了数据绑定 , 所以这句话是必须出现的 ,或者直接写 page.DataBind()也行。
加个控件对label 本身是没有影响的 只是你把他处理绑定的表达式换成别的了 所以自然label不会出现数据
至于什么时候控件的问题么,自然是在你需要用它的时候了, 也就是你要在GridView或者Datalist上显示数据的情况下

dgrdProducts.DataSource = dstProducts;
DataBind();

改为
dgrdProducts.DataSource = dstProducts;
dgrdProducts.DataBind();

是二种方式.一种是FILL到DATESET这种要用BIND()
还有一种用控件的绑定是要用到DataTable
dadProducts.Fill(DataTable);
上面这个例子是把数据填到DATASET中的.

你OrderTotal()里面的dstProducts(dataset)是没有数据的,原因就在你Page_Load()里面的:dstProducts = new DataSet();

你Page_Load()里面用的是你里面的dstProducts,而你OrderTotal()里面用的是你最外面定义的那个:

<script runat=server>
DataSet dstProducts; //你用的是这个

而这个DataSet你从来就没有给他赋过值,所以你下面用他是不可能有结果出来地!

把Page_Load()里面 dstProducts = new DataSet(); 去掉就好了!

原因很简单,程序是先运行页面上的<%# OrderTotal() %>的,然后再运行Page_Load的。

当运行页面时,它还没有开始Page_Load,就是说数据还没有填充进DataSet,程序就先开始运行<%# Or