asp.net中實現DetailsView控制項下的兩個DropDownList級連變動

來源:互聯網
上載者:User

http://www.cnblogs.com/dreampeng007/archive/2007/12/03/980965.html

 

做項目中,一直在用DetailsView控制項在顯示資料庫表的詳細資料,今天遇到了這種情況,用DetailsView顯示資料時,如果單擊編輯,需要顯示鄉和村這兩個下拉式清單,單擊鄉時,村需要與之對應。
 
解決思路:
在DetailsView控制項中分別為鄉和村增加兩個模板列,在兩個模板列的EditItemTemplate下均增加兩個控制項,分別為
HiddenField和DropDownList,HiddenField用來記錄當前資料庫中鄉(或者村)的編號,DropDownList用來顯示
鄉(或者村)的資料,這個資料需要在使用者單擊編輯時根據使用者所編輯的資訊來動態綁定的,所以這個代碼應當寫到DetailsView控制項裡的
ModeChanging事件裡,鄉和村的級連很簡單,和在頁中實現的原理一樣,將鄉的DropDownList控制項的屬性AutoPostBack設定
為true,增加OnSelectedIndexChanged事件就可以了。
 
部分代碼:
DetailsView:
<asp:TemplateField HeaderText="鄉名">
                                           
<EditItemTemplate><asp:HiddenField ID="HDXiang" runat="server"
Value='<%#Bind("鄉名")  %>' /><asp:DropDownList ID="DDXiangz"
runat="server" Width="90px"  AutoPostBack="true"
OnSelectedIndexChanged="ddlXiang_SelectedIndexChanged"/></EditItemTemplate>
                                            <ItemTemplate>
                                                <asp:Label
ID="Label1" runat="server"
Text='<%#getXiangName(Eval("鄉名").ToString())
%>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="村名">
                                          
<EditItemTemplate><asp:HiddenField ID="HDCun" runat="server"
Value='<%#Bind("村名")  %>' /><asp:DropDownList ID="DDlCun"
runat="server" Width="90px" /></EditItemTemplate>
                                            <ItemTemplate>
                                                <asp:Label
ID="Label2" runat="server" Text='<%# 
getCunName(Eval("村名").ToString())%>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
 
ModeChanging事件:
  if (e.NewMode == DetailsViewMode.Edit)
        {
            //綁定鄉,從DetailsView控制項中尋找,我的DropDownList鄉在第三行
            DropDownList DDXiang = (DropDownList)this.DetailsView1.Rows[2].Cells[1].Controls[0].FindControl("DDXiangz");
            DDXiang.DataSource = 您的資料來源;
            DDXiang.DataTextField = "鄉名";
            DDXiang.DataValueField = "編號";
            DDXiang.DataBind();
            //  選中鄉的 DropDownList
            DDXiang.SelectedValue = ((HiddenField)this.DetailsView1.Rows[2].Cells[1].FindControl("HDXiang")).Value;

            //綁定村,從DetailsView控制項中尋找,我的DropDownList村在第四行
            DropDownList DDCun = (DropDownList)this.DetailsView1.Rows[3].Cells[1].Controls[0].FindControl("DDlCun");
            DDCun.DataSource = 您的資料來源;
            DDCun.DataTextField = "村名";
            DDCun.DataValueField = "編號";
            DDCun.DataBind();
            //  選中村的 DropDownList
            DDCun.SelectedValue = ((HiddenField)this.DetailsView1.Rows[3].Cells[1].FindControl("HDCun")).Value;
        }
 
/// <summary>
    /// 編輯時村隨著鄉變化
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void ddlXiang_SelectedIndexChanged(object sender, EventArgs e)
    {
        //綁定村
        DropDownList DDCun = (DropDownList)this.DetailsView1.Rows[4].Cells[1].Controls[0].FindControl("DDlCun");
        DropDownList DDXiang = (DropDownList)this.DetailsView1.Rows[3].Cells[1].Controls[0].FindControl("DDXiangz");
        DDCun.DataSource = mycom您的資料來源;
        DDCun.DataTextField = "村名";
        DDCun.DataValueField = "編號";
        DDCun.DataBind();
    }
 




文章來源(WEB開發技術知識庫):http://www.cn-web.com/cnweb/0/385/article/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.