|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)asp.net在asp.net2.0中,在一个gridview里,能够嵌套进一个dropdownlist,这是非常简单的事变,而这里讲的是,
在每一个dropdownlist里,都绑定的是分歧的内容,好比在northwind数据库中,能够用GRIDVIEW显现出
每一个category种别,同时每行的category种别里能够已dropdonwlist下拉框的情势,列出该分类下的一切
产物.上面先容完成的办法
起首是页脸部分的代码
<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundFieldDataField="CategoryID"HeaderText="CategoryID"/>
<asp:BoundFieldDataField="CategoryName"HeaderText="CategoryName"/>
<asp:TemplateFieldHeaderText="Products">
<ItemTemplate>
<asp:DropDownListID="DropDownList1"runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
在codebehind部分,
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!Page.IsPostBack)
{
//ThisisbecauseTable[1]containsCategories
GridView1.DataSource=GetDataSet().Tables[1];
GridView1.DataBind();
}
}
privateDataSetGetDataSet()
{
stringquery=@"SELECTp.CategoryID,p.ProductID,p.ProductNameFROMProductsp
SELECTc.CategoryID,c.CategoryNameFROMCategoriesc";
stringconnectionString="Server=localhost;Database=Northwind;userid=sa;password=123456";
SqlConnectionmyConnection=newSqlConnection(connectionString);
SqlDataAdapterad=newSqlDataAdapter(query,myConnection);
DataSetds=newDataSet();
ad.Fill(ds);
returnds;
}
在下面的代码中,起首我们经由过程典范的dataset前往,绑定到gridview上往,注重这里sql语句里有两句,第一句是前往产物,第二句是前往一切的种别category,而在绑定gridview时,我们用
GridView1.DataSource=GetDataSet().Tables[1];,将第一个table内外的category纪录绑定到gridview里往,接上去,我们要处置模版列中的dropdownlist了,这个能够在row_databound事务中写进代码,以下
protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse)
{
DataTablemyTable=newDataTable();
DataColumnproductIDColumn=newDataColumn("ProductID");
DataColumnproductNameColumn=newDataColumn("ProductName");
myTable.Columns.Add(productIDColumn);
myTable.Columns.Add(productNameColumn);
DataSetds=newDataSet();
ds=GetDataSet();
intcategoryID=0;
stringexpression=String.Empty;
if(e.Row.RowType==DataControlRowType.DataRow)
{
categoryID=Int32.Parse(e.Row.Cells[0].Text);
expression="CategoryID="+categoryID;
DropDownListddl=(DropDownList)e.Row.FindControl("DropDownList1");
DataRow[]rows=ds.Tables[0].Select(expression);
foreach(DataRowrowinrows)
{
DataRownewRow=myTable.NewRow();
newRow["ProductID"]=row["ProductID"];
newRow["ProductName"]=row["ProductName"];
myTable.Rows.Add(newRow);
}
ddl.DataSource=myTable;
ddl.DataTextField="ProductName";
ddl.DataValueField="ProductID";
ddl.DataBind();
}
}
这里的道理大抵以下:
起首,我们创建了一个datatable,包括了productid,productname列,然后将其与gridview绑定,以后再用
categoryID=Int32.Parse(e.Row.Cells[0].Text);
expression="CategoryID="+categoryID;
机关一个选择表达式,这里指定为categoryID,然后经由过程
DropDownListddl=(DropDownList)e.Row.FindControl("DropDownList1");
DataRow[]rows=ds.Tables[0].Select(expression);
,找出切合其种别即是某一categoryID的一切产物,这里机关出datarow汇合了,最初,利用轮回
,将某种别下的产物全体增加到datatable中往,最初将datatable和dropdownlist绑定,就完成功效了
可怜的程序员,还是逃不出移植的命运! |
|