This is a migrated thread and some comments may be shown as answers.

Writing data to template columns (ddl and txt box)

2 Answers 39 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Michael
Top achievements
Rank 1
Michael asked on 02 Feb 2014, 03:22 AM
Having a heck of a time setting one template field based on the choice in another:

See attached image:

When I select a "Worker", it that worker is bBrown I want to set the "On TimeCard" to "Yes" for any other user set it to "No"

Seems simple enough.

Template field for dropdown looks like this:

<telerik:GridTemplateColumn FilterControlAltText="Filter TemplWorker column"
HeaderText="Worker" UniqueName="TemplWorker">
<EditItemTemplate>
<telerik:RadDropDownList ID="RadDropDownList5" runat="server"
DataSourceID="sqlWorkers" DataTextField="EmployeeNumber"
DataValueField="EmployeeID" DropDownHeight="300px"
DropDownWidth="150px" ExpandDirection="Up" Width="110px"
SelectedText='<%# Bind("LaborPerformedBy") %>' CausesValidation="False"
OnSelectedIndexChanged ="RadDropDownList5_SelectedIndexChanged"
AutoPostback="False"
>

</telerik:RadDropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
ControlToValidate="RadDropDownList5" ErrorMessage="Worker is required."
Font-Size="XX-Small" ForeColor="Red" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</EditItemTemplate>

<ItemTemplate>
<asp:Label ID="Label4" runat="server"
Text='<%# Eval("LaborPerformedBy") %>' Width="75px"></asp:Label>
</ItemTemplate>
<HeaderStyle Width="145px" />
</telerik:GridTemplateColumn>

I have tried so many different things not even sure what is what anymore or which event to hook   :-)


I was able to get the value of the dropdown in itemdatabound but I still cannot set the "On Timecard" field.

Any direction is appreciated.



2 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 03 Feb 2014, 05:34 AM
Hi Michael,

Please try the following code snippet to set a column text based on dropdownlist select:

ASPX:
<telerik:GridTemplateColumn HeaderText="Worker" UniqueName="TemplWorker">
    <EditItemTemplate>
      <telerik:RadDropDownList ID="RadDropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="RadDropDownList1_SelectedIndexChanged". . .>
      </telerik:RadDropDownList>  
    </EditItemTemplate>  
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="On Timecard">
    <EditItemTemplate>
        <asp:Label ID="Label1" runat="server" Text="No"></asp:Label>
    </EditItemTemplate>
</telerik:GridTemplateColumn>

C#:
protected void RadDropDownList1_SelectedIndexChanged(object sender, DropDownListEventArgs e)
{
  RadDropDownList droplist = (RadDropDownList)sender;
  GridEditableItem edit = (GridEditableItem)droplist.NamingContainer;
  Label lbl = (Label)edit.FindControl("Label1");
  if (droplist.SelectedText == "bBrown")
  {
   lbl.Text = "Yes";
  }
  else
  {
   lbl.Text = "No";
  }       
}

Thanks,
Princy
0
Jayesh Goyani
Top achievements
Rank 2
answered on 03 Feb 2014, 05:54 AM
Hello,

Client Side.
<telerik:GridTemplateColumn>
                           <ItemTemplate>
                               <asp:DropDownList ID="DropDownList1" runat="server" onChange="DropDownList1Click(this);">
                                   <asp:ListItem Value="0" Text="--Select--"></asp:ListItem>
                                   <asp:ListItem Value="1" Text="1"></asp:ListItem>
                                   <asp:ListItem Value="2" Text="2"></asp:ListItem>
                               </asp:DropDownList>
                           </ItemTemplate>
                       </telerik:GridTemplateColumn>
                       <telerik:GridTemplateColumn>
                           <ItemTemplate>
                               <asp:Label ID="Label1" runat="server"></asp:Label>
                           </ItemTemplate>
                       </telerik:GridTemplateColumn>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script>
            function DropDownList1Click(obj) {
                $("#" + obj.id.replace("DropDownList1", "Label1")).html($(obj).val());
            }
        </script>
    </telerik:RadCodeBlock>

Server Side

<telerik:GridTemplateColumn>
                          <ItemTemplate>
                              <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" CausesValidation="false" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                                  <asp:ListItem Value="0" Text="--Select--"></asp:ListItem>
                                  <asp:ListItem Value="1" Text="1"></asp:ListItem>
                                  <asp:ListItem Value="2" Text="2"></asp:ListItem>
                              </asp:DropDownList>
                          </ItemTemplate>
                      </telerik:GridTemplateColumn>
                      <telerik:GridTemplateColumn>
                          <ItemTemplate>
                              <asp:Label ID="Label1" runat="server"></asp:Label>
                          </ItemTemplate>
                      </telerik:GridTemplateColumn>
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddl = (sender as DropDownList);
    GridDataItem item = ddl.NamingContainer as GridDataItem;
    (item.FindControl("Label1") as Label).Text = ddl.SelectedValue;
 
}


Thanks,
Jayesh Goyani
Tags
Grid
Asked by
Michael
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Jayesh Goyani
Top achievements
Rank 2
Share this question
or