2016-09-09 12 views
0

グリッドビューasp.netのrowdataboundイベントにすべてのドロップダウンとカスケードドロップダウンを作成しました カスケードドロップダウンから任意の値を選択すると問題が発生します保存してください。 最初の値のみが初めて保存されます シナリオが国のドロップダウンにあると仮定します。
インドを選択して状態が設定されますが、私がいくつかの州を選択した場合、グジャラートと私は保存して値を返します。 Rowdataboundイベントでグジャラートしかし
ドロップダウンで第一値Iはすべてのポストにバインドグリッドを呼び出す必要があり、バックカスケードドロップダウンは、クリックイベントを保存するとゼロインデックスにリセットされます

 if (value.Equals("Dropdown")) 
       { 
        int attributeid = Int32.Parse((e.Row.DataItem as DataRowView).Row["attributeid"].ToString()); 
        string a = (e.Row.DataItem as DataRowView).Row["attributevalue"].ToString(); 
        DropDownList dp = new DropDownList(); 
        dp.ID = attributeid.ToString(); 
        dp.CssClass = "gridtextbox"; 
        dp.EnableViewState = true; 
        getDropdowns(dp, attributeid); 

        String attributevalue = (e.Row.DataItem as DataRowView).Row["attributevalue"].ToString(); 
        int cascadingid = Int32.Parse((e.Row.DataItem as DataRowView).Row["cascadingid"].ToString()); 


        if (cascadingid != 0 ) 
        { 

         dp.SelectedIndexChanged += new EventHandler(Bind_gridchild); 
         dp.AutoPostBack = true; 

        } 

        e.Row.Cells[1].Controls.Add(dp); 

そして、私のgetdropdown()メソッドは、
を下に第一のドロップのためにデータをバインドselectedIndexchange ev ENT

if (inputtype.Equals("Dropdown")) 
       { 
        DropDownList dp = new DropDownList(); 
        dp = (DropDownList)Vendorform.Rows[Int32.Parse(cascading)].FindControl(cascading); 
        //dp.EnableViewState = true; 
        // dp.AppendDataBoundItems = true; 
        string dummy = dp.ID; 

        using (dbForcastingDataContext db = new dbForcastingDataContext()) 
        { 

          dp.DataSource = db.usp_vm_etl_getdropdownvalues(Int32.Parse(cascading), Int32.Parse(selectedValue)); 
          dp.DataTextField = "attributeSelectionValue"; 
          dp.DataValueField = "attributeSelectionValue"; 
          dp.DataBind(); 
          // dp.Items.Insert(0,new ListItem("Select", "0")); 

        } 

       } 
+0

コードを共有します。それはASP.NETのWebフォームまたはMVCですか? –

+0

Asp.net web form – ankit12

答えて

0

まずあなたが戻ってすべてのポストに をバインドグリッドを呼び出すために、ポストの後に戻って、選択した値がDDLで第一の値になります持っているので、あなたにはJavascriptを使用して隠しフィールドにその選択された値を格納する必要があります。

<script > 
function CallButtonClick() { 
      var e = document.getElementById("<%=DropDownList1.ClientID %>"); 
      var x = e.options[e.selectedIndex].value; 
      document.getElementById("HiddenField1").innerText = x; 
      __doPostBack("<%=DropDownList1.UniqueID %>", ""); 
     } 
</script> 

はあなたのページ

<asp:HiddenField ID="HiddenField1" runat="server" /> 

あなたのコード

using (dbForcastingDataContext db = new dbForcastingDataContext()) 
     { 
       dp.DataSource = db.usp_vm_etl_getdropdownvalues(Int32.Parse(cascading), Int32.Parse(selectedValue)); 
       dp.DataTextField = "attributeSelectionValue"; 
       dp.DataValueField = "attributeSelectionValue"; 
       dp.DataBind(); 
       if (HiddenField1.Value != null) 
       { 
        DropDownList1.SelectedValue = HiddenField1.Value; 
       } 
       HiddenField1.Value = string.Empty; 

     } 

のDropDownListでのHiddenFieldコントロールを追加します。

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" onchange="return CallButtonClick();" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" ></asp:DropDownList> 
+0

これは動作しません。私の問題は、コントロールが作成され、gridrowviewのonrowdataboundにバインドされています。そこにも私のキャサディングガードが再バインドされ、選択された値が失われます。 – ankit12

+0

上記のコードをonrowdataboundの内側ドロップダウンリストがバインドされます。解決されない場合は、正確なコードを更新してください。 – ADarnal

関連する問題