timz_123
timz_123

Reputation: 437

DropDownList is not showing the Selected Value in EditItemTemplate of RadGrid

I am using asp DropDownList inside RadGrid, and trying to Add and Update the DropDownList item inside Database table.

Below is the HTML code for DropDownList inside RadGrid's EditItemTemplate:

<telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
       <ItemTemplate>
           <asp:Label ID="lblAcCode" runat="server" Text='<%# Eval("AccountCode")%>'></asp:Label>
       </ItemTemplate>
       <EditItemTemplate>
           <asp:Label ID="lblAcCode2" runat="server" Text='<%# Eval("AccountCode") + " - " + Eval("AccountDescription")%>'></asp:Label>
           <asp:DropDownList ID="ddlAcCode" DataTextField="AccountDescription" DataValueField="AccountCodeID" runat="server"/> 
       </EditItemTemplate>
</telerik:GridTemplateColumn>

C# Code:

    public DataTable GetAccCode(string CompanyCode)
        {
            SqlConnection con = new SqlConnection(strcon);
            SqlCommand cmd = new SqlCommand("[Invoice].[usp_tbl_AccountCode_DL_Test]", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@CompanyCode", CompanyCode);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            try
            {
                con.Open();
                da.Fill(dt);
                con.Close();
            }
            catch (Exception ex)
            {
            }
            return dt;
        }

    protected void RGGSTAcCode_ItemDataBound(object sender, GridItemEventArgs e)
        {

           if (e.Item is GridEditableItem && e.Item.IsInEditMode)
                {
                    //bind dropdwon while "Add" 
                    string CompanyCode = ddlCompany.SelectedValue.ToString();
                    GridEditableItem item = (GridEditableItem)e.Item;
                    DropDownList ddl = (DropDownList)item.FindControl("ddlAcCode");
                    ddl.DataSource = GetAccCode(CompanyCode);
                    ddl.DataTextField = "AccountDescription";
                    ddl.DataValueField = "AccountCodeID";
                    ddl.DataBind();
                    ddl.Items.Insert(0, "- Select -");

                    //Select particular dropdown value while "Edit"
                    string accCodeID =  item.GetDataKeyValue("AccountCodeID").ToString();
                    Label lblAcCode2 = item.FindControl("lblAcCode") as Label;

                    //if (!string.IsNullOrEmpty(lblAcCode2.Text))
                    //{
                        ddl.SelectedValue = lblAcCode2.Text;
                    //}
                    //string SelectedVal =  ddl.SelectedValue;

                if (!string.IsNullOrEmpty(lblAcCode2.Text))
                {
                    SqlConnection con = new SqlConnection(strcon);
                    con.Open();
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = new SqlCommand("SELECT [AccountCode]+' - '+[AccountDescription] as [AccountDescription] FROM [Sunway_AP].[Invoice].[tbl_AccountCodeTest] where AccountCodeID='" + accCodeID + "' ", con);

                    DataTable dt = new DataTable();
                    try
                    {
                        adapter.Fill(dt);
                    }
                    finally
                    {
                        con.Close();
                    }
                    ddl.SelectedValue = dt.ToString();
                    string SelectedVal = ddl.SelectedValue;
                }

             }
         }

This is the Stored Procedure:

ALTER PROCEDURE [Invoice].[usp_tbl_AccountCode_DL_Test]
    @CompanyCode nvarchar(50)
AS
BEGIN   
    SET NOCOUNT ON;   
       SELECT [AccountCodeID] ,[AccountCode]+' - '+[AccountDescription] as [AccountDescription]     
       FROM [Sunway_AP].[General].[tbl_AccountCode] (NOLOCK)
       Where [CompanyCode] = @CompanyCode
       order by [AccountCode]+' - '+[AccountDescription]

END

My problem is: I am unable to fetch the "DropDownList's" selected value for a particular Id (particular row of RadGrid), while Edit. Everytime when I try to set the Selected Value of DropdownList from code behind, it shows me 1st item '- Select -' inside the selected value.

Please reply what is wrong in my code. I am very new in Telerik. Thanks in advance.

Upvotes: 0

Views: 2328

Answers (1)

Sankar
Sankar

Reputation: 7117

Modified my posted code as below:

protected void RGGSTAcCode_ItemDataBound(object sender, GridItemEventArgs e)
    {

       if (e.Item is GridEditableItem && e.Item.IsInEditMode)
            {
                //bind dropdwon while "Add" 
                string CompanyCode = ddlCompany.SelectedValue.ToString();
                GridEditableItem item = (GridEditableItem)e.Item;
                DropDownList ddl = (DropDownList)item.FindControl("ddlAcCode");
                ddl.DataSource = GetAccCode(CompanyCode);
                ddl.DataTextField="*your text field*";
                ddl.DataValueField="*your Value field*";
                ddl.DataBind();
                ddl.Items.Insert(0, "- Select -");

               Label lblAcCode2 = item.FindControl("lblAcCode2") as Label;
               if (!string.IsNullOrEmpty(lblAcCode2.Text))
               {
                  ddl.SelectedItem.Text = lblAcCode2.Text;
                  ddl.SelectedValue = lblAcCode2.Text;
               }
           }
     }

    <telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
       <ItemTemplate>
         <asp:Label ID="lblAcCode" runat="server" Text='<%# Eval("AccountCode")%>'></asp:Label>
       </ItemTemplate>
       <EditItemTemplate>
         <asp:Label ID="lblAcCode2" runat="server" Text='<%# Eval("AccountCode") + " - " + Eval("AccountDescription")%>' Visible="false"></asp:Label>
         <asp:DropDownList ID="ddlAcCode" DataTextField="AccountDescription" DataValueField="AccountCodeID" runat="server"/> 
       </EditItemTemplate>
   </telerik:GridTemplateColumn>

Hope this helps...

All the best...

Upvotes: 1

Related Questions