回覆列表
  • 1 # 南風微涼北島花念伊

    可以!

    把打算下拉的那列變成模板列(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());

    }

  • 中秋節和大豐收的關聯?
  • 日本動漫中,最受觀眾青睞的“妹妹”角色有哪幾位?