Question

Below is my code for a RadGrid edit form, and it's working fine but I want to hide place holder control ID="plupload" on Insert/Edit mode of EditFormSettings on RadComboBox1 index changed event.

Can anyone please help to fix this issue?

<editformsettings editformtype="Template">
    <FormTemplate>
        <table id="Table2" cellspacing="2" cellpadding="1" width="100%" border="0" rules="none" style="border-collapse: collapse;">                       
            <tr>
                <td>
                    <table id="Table4" cellspacing="1" cellpadding="1" width="50%" border="0" class="module">
                        <tr>
                            <td>
                                Name:
                            </td>
                            <td>
                                <asp:TextBox ID="TextBox2" Text='<%# Bind( "Name") %>' runat="server" TabIndex="8">
                                </asp:TextBox>
                            </td>
                        </tr>       
                        <asp:PlaceHolder ID="plupload" runat="server" >
                            <tr>
                                <td>
                                    File Upload :
                                </td>
                                <td>
                                    <telerik:RadAsyncUpload runat="server" ID="AsyncUpload1" OnClientFileUploaded="OnClientFileUploaded" MultipleFileSelection="Disabled" AllowedFileExtensions="jpg,jpeg,png,gif" MaxFileSize="1048576" onvalidatingfile="RadAsyncUpload1_ValidatingFile">
                                    </telerik:RadAsyncUpload>
                                </td>
                            </tr>   
                        </asp:PlaceHolder>
                    </table>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td align="right" colspan="2">
                    <asp:Button ID="btnUpdate" Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>'
                                    runat="server" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'></asp:Button>&nbsp;
                    <asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False" CommandName="Cancel"></asp:Button>
                </td>
            </tr>
        </table>
    </FormTemplate>
</editformsettings>

Here is my RadComboBox code:

<telerik:RadComboBox ID="RadComboBox1" runat="server" OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged" AutoPostBack="True">
    <Items>
        <telerik:RadComboBoxItem Value="1" Text="Show All" />
        <telerik:RadComboBoxItem Value="2" Text="Hide File Upload" />
    </Items>
</telerik:RadComboBox>
Était-ce utile?

La solution

Since you did not mention where your RadComboBox is, I am assuming it is outside of the RadGrid control. If that is the case, I suggest you implement a custom method to recursively search for your Placeholder.

// search for a specified control in the given root control and all its children
public static Control FindControlRecursive(Control rootControl, string searchControlID)
{ 
    if (rootControl.ID == searchControlID) return rootControl;

    foreach (Control controlToSearch in rootControl.Controls)
    {
        Control controlToReturn = FindControlRecursive(controlToSearch, searchControlID);
        if (controlToReturn != null) return controlToReturn;
    }
    return null;
}

Then, in your page's code-behind, you can search for plupload and set its Visible attribute.

protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e))
{
    RadComboBox RadComboBox1 = (RadComboBox)sender;

    // Get the placeholder control nested inside the RadGrid
    Placeholder plupload = (Placeholder)FindControlRecursive(RadGrid1, "plupload");

    if (plupload != null)
    {
        if (RadComboBox1.SelectedValue == "2")
            plupload.Visible = false;
        else plupload.Visible = true;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top