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