可以!
把打算下拉的那列變成模板列(TemplateField),在模板列中拖入下拉框,這個最好用IDE完成,完成之後看前臺原始碼如下:(這是我的程式片段)
<asp:TemplateFieldHeaderText="三級模板">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"Width="100px"/>
<ItemTemplate>
<asp:DropDownListID="DDLContent"runat="server"DataTextField="模板名稱"DataValueField="模板編號"AutoPostBack="True"OnSelectedIndexChanged="DDLContent_SelectedIndexChanged">
</asp:DropDownList>
<asp:LabelID="LbtopicID"runat="server"Visible="False"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
在後臺要做兩件事,1是把資料庫中的資料繫結到下拉框,2是當下拉框被選擇時程式要做出的反應:
1.把資料庫中的資料繫結到下拉框
protectedvoidGridView_RowDataBound(objectsender,GridViewRowEventArgse)//該事件是自動生成
{
if(e.Row.RowType==DataControlRowType.DataRow)//如果此行是DataGrid控制元件資料行
stringtopicID=GridView.DataKeys[e.Row.RowIndex].Value.ToString();//獲取本行關鍵字的值
//***************下面是三級模板列的繫結**********************
if(((DropDownList)e.Row.FindControl("DDLContent"))!=null)//我的下拉框叫DDLContent
DataSetds=cd.getContentModel(topicID);//從資料庫中取得要放入下拉框的資料
DropDownListDDLContent=(DropDownList)e.Row.FindControl("DDLContent");
DDLContent.Items.Clear();
DDLContent.DataSource=cd.listModel();
DDLContent.DataBind();//繫結
if(ds.Tables[0].Rows.Count>0)//
DDLContent.SelectedValue=ds.Tables[0].Rows[0]["模板編號"].ToString();
}
else
DDLContent.Items.Insert(0,"請選擇...");//使用者沒進行選擇時顯示這行
//*****************三級模板列繫結結束************************
2.如果被繫結的下拉框被使用者選擇,那麼。。。
protectedvoidDDLContent_SelectedIndexChanged(objectsender,EventArgse)
//下面都是我的具體業務邏輯,你把它們換成你自己的
GridViewRowGVR=(GridViewRow)((Control)sender).Parent.Parent;
DropDownListDDLC=(DropDownList)(GVR.FindControl("DDLContent"));
LabelLbtopicID=(Label)(GVR.FindControl("LbtopicID"));
cd.setContentModel(LbtopicID.Text,DDLC.SelectedValue.ToString());
可以!
把打算下拉的那列變成模板列(TemplateField),在模板列中拖入下拉框,這個最好用IDE完成,完成之後看前臺原始碼如下:(這是我的程式片段)
<asp:TemplateFieldHeaderText="三級模板">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"Width="100px"/>
<ItemTemplate>
<asp:DropDownListID="DDLContent"runat="server"DataTextField="模板名稱"DataValueField="模板編號"AutoPostBack="True"OnSelectedIndexChanged="DDLContent_SelectedIndexChanged">
</asp:DropDownList>
<asp:LabelID="LbtopicID"runat="server"Visible="False"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
在後臺要做兩件事,1是把資料庫中的資料繫結到下拉框,2是當下拉框被選擇時程式要做出的反應:
1.把資料庫中的資料繫結到下拉框
protectedvoidGridView_RowDataBound(objectsender,GridViewRowEventArgse)//該事件是自動生成
{
if(e.Row.RowType==DataControlRowType.DataRow)//如果此行是DataGrid控制元件資料行
{
stringtopicID=GridView.DataKeys[e.Row.RowIndex].Value.ToString();//獲取本行關鍵字的值
//***************下面是三級模板列的繫結**********************
if(((DropDownList)e.Row.FindControl("DDLContent"))!=null)//我的下拉框叫DDLContent
{
DataSetds=cd.getContentModel(topicID);//從資料庫中取得要放入下拉框的資料
DropDownListDDLContent=(DropDownList)e.Row.FindControl("DDLContent");
DDLContent.Items.Clear();
DDLContent.DataSource=cd.listModel();
DDLContent.DataBind();//繫結
if(ds.Tables[0].Rows.Count>0)//
{
DDLContent.SelectedValue=ds.Tables[0].Rows[0]["模板編號"].ToString();
}
else
{
DDLContent.Items.Insert(0,"請選擇...");//使用者沒進行選擇時顯示這行
}
}
//*****************三級模板列繫結結束************************
}
}
2.如果被繫結的下拉框被使用者選擇,那麼。。。
protectedvoidDDLContent_SelectedIndexChanged(objectsender,EventArgse)
{
//下面都是我的具體業務邏輯,你把它們換成你自己的
GridViewRowGVR=(GridViewRow)((Control)sender).Parent.Parent;
DropDownListDDLC=(DropDownList)(GVR.FindControl("DDLContent"));
LabelLbtopicID=(Label)(GVR.FindControl("LbtopicID"));
cd.setContentModel(LbtopicID.Text,DDLC.SelectedValue.ToString());
}