Telerik Forums
UI for ASP.NET AJAX Forum
3 answers
353 views
I am working on a grid that puts all the rows (about 8 usually) into edit mode for batch updates. 
I have a command button in the command header of the grid to save all the data. 

I was trying to use the ExtractValuesFromItem and SavedOldValues collections to perform the update and neither collection has any data. All the entries are there but are all NULL. I don't understand why.  I have used this method before in a slightly different situation.
The one thing I can see that is different is in the current grid that this isn't working for I have defined an ItemTemplate and an EditItemTemplate. I am using InPlace edit mode.

I have found that I can get the current values by using editedItem.FindControl("...")... but this is a little more work and it doesn't give me the previous values either.

Should I be able to use the ExtractValues and SavedOldvalues methods in this instance or is there some reason why it cannot be used? If it should be working - any thought on why both collections are coming up with nulls for everying?

The codebehind for updates:
protected void UpdateAll_Clicked(object sender, EventArgs e)
 {
     try
     {
 
         WeatherForecast w = new WeatherForecast();
         WeatherForecast orig_w = new WeatherForecast();
 
         foreach (GridDataItem item in RadGrid1.EditItems)
         {
             GridEditableItem editedItem = (item.OwnerTableView.EditMode == GridEditMode.InPlace) ? item : (GridEditableItem)item.EditFormItem;
 
             Hashtable newValues = new Hashtable();
             //The GridTableView will fill the values from all editable columns in the hash 
             RadGrid1.MasterTableView.ExtractValuesFromItem(newValues, editedItem);
 
             newValues["Temp"] = (editedItem.FindControl("txtTemp") as TextBox).Text;
             newValues["Temp2"] = (editedItem.FindControl("txtTemp2") as TextBox).Text;
             newValues["ShortText"] = (editedItem.FindControl("txtShortText") as TextBox).Text;
             newValues["Pop"] = (editedItem.FindControl("txtPop") as TextBox).Text;
             newValues["Manual"] = (editedItem.FindControl("radioManualEdit") as RadioButton).Checked;
             newValues["ConditionId"] = (editedItem.FindControl("listWeather") as RadComboBox).SelectedItem.Value;
             newValues["UvIndex"] = (editedItem.FindControl("listUvIndex") as DropDownList).SelectedItem.Value;
 
              
             w.Id = Convert.ToInt32(editedItem.GetDataKeyValue("Id"));
             w.Temp = Convert.ToInt32(newValues["Temp"]);
             w.Temp2 = Convert.ToInt32(newValues["Temp2"]);
             w.ConditionId = Convert.ToInt32(newValues["ConditionId"]);
             w.ShortText = Convert.ToString(newValues["ShortText"]);
             if (string.IsNullOrEmpty(Convert.ToString(newValues["Pop"])))
             {
                 w.Pop = null;
             }
             else
             {
                 w.Pop = Convert.ToInt32(newValues["Pop"]);
             }
             w.Manual = Convert.ToBoolean(newValues["Manual"]);
             w.UvIndex = Convert.ToInt32(newValues["UvIndex"]);
             w.UvText = WeatherForecast.GetUvText(w.UvIndex);
 
             // TODO: implement day of week editing
             // w.DayOfWeek = Convert.ToString(newValues["DayOfWeek"]);
 
             orig_w.Id = w.Id;
             orig_w.Temp = Convert.ToInt32(editedItem.SavedOldValues["Temp"]);
             orig_w.Temp2 = Convert.ToInt32(editedItem.SavedOldValues["Temp2"]);
             orig_w.ConditionId = Convert.ToInt32(editedItem.SavedOldValues["ConditionId"]);
             orig_w.ShortText = Convert.ToString(editedItem.SavedOldValues["ShortText"]);
             if (string.IsNullOrEmpty(Convert.ToString(editedItem.SavedOldValues["Pop"])))
             {
                 orig_w.Pop = null;
             }
             else
             {
                 orig_w.Pop = Convert.ToInt32(editedItem.SavedOldValues["Pop"]);
             }
             orig_w.Manual = Convert.ToBoolean(editedItem.SavedOldValues["Manual"]);
             orig_w.UvIndex = Convert.ToInt32(editedItem.SavedOldValues["UvIndex"]);
             orig_w.UvText = WeatherForecast.GetUvText(orig_w.UvIndex);
 
            // wDAO.UpdateWeather(w, orig_w);
 
             editedItem.Edit = false;
         }
     }
     catch (Exception ex)
     {
         Common.FlowFunctions.ShowErrorMessage(RadAjaxManager1, "Error updating weather: " + ex.Message, true);
     }
 
     setSelection = true;
 
     RadGridCity.Rebind();
     RadGrid1.Rebind();
 }


The markup: 
<telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0"
     GridLines="None" AllowSorting="false" AutoGenerateColumns="False" AllowPaging="true"  PageSize="20"
      AllowAutomaticDeletes="false"
      AllowAutomaticUpdates="false"
      OnPreRender="RadGrid1_PreRender"
      OnSortCommand="RadGrid1_SortCommand"
      OnNeedDataSource="RadGrid1_NeedDataSource"
      OnItemCommand="RadGrid1_ItemCommand"
      OnItemDataBound="RadGrid1_ItemDataBound" >
     <ClientSettings  >
          <ClientEvents OnKeyPress="keyPressedStopEnter" />
     </ClientSettings>
     <PagerStyle AlwaysVisible="false" />
     <ItemStyle CssClass="report_col_B" />
     <AlternatingItemStyle CssClass="report_col_A" />
     <MasterTableView DataKeyNames="Id" EditMode="InPlace" TableLayout="Fixed"  CommandItemDisplay="Top">
         <Columns>
             <telerik:GridCheckBoxColumn DataField="Manual" DataType="System.Boolean"
                 HeaderText="Source" SortExpression="Manual" UniqueName="Manual" Display="false">
             </telerik:GridCheckBoxColumn>
 
             <telerik:GridBoundColumn DataField="LocationCode" UniqueName="LocationCode" HeaderText="Location Code" Visible="false" ></telerik:GridBoundColumn>
 
             <telerik:GridBoundColumn DataField="LocationName" DataType="System.String" UniqueName="LocationName" Visible="false" HeaderText="Location" ></telerik:GridBoundColumn>
 
             <telerik:GridBoundColumn DataField="ConditionId" UniqueName="ConditionId" HeaderText="Icon" AllowSorting="false" Visible="false" ></telerik:GridBoundColumn>
 
             <telerik:GridBoundColumn DataField="TempLabel" UniqueName="TempLabel" Visible="false" AllowSorting="false" ></telerik:GridBoundColumn>
             <telerik:GridBoundColumn DataField="Temp2Label" UniqueName="Temp2Label" Visible="false" AllowSorting="false" ></telerik:GridBoundColumn>
 
             <telerik:GridBoundColumn DataField="Temp" UniqueName="Temp" HeaderText="Temp" AllowSorting="false" Visible="false" HeaderTooltip="The high for daily forecasts." ></telerik:GridBoundColumn>
             <telerik:GridBoundColumn DataField="Temp2" UniqueName="Temp2" HeaderText="Temp 2" AllowSorting="false" Visible="false" HeaderTooltip="The low for daily forecasts and 'Feels Like' for current and hourly." ></telerik:GridBoundColumn>
                  
             <telerik:GridBoundColumn DataField="ShortText" UniqueName="ShortText" HeaderText="Short Text" Visible="false" AllowSorting="false" ></telerik:GridBoundColumn>
             <telerik:GridBoundColumn DataField="Pop" UniqueName="Pop" HeaderText="P.O.P." AllowSorting="false" Visible="false" HeaderTooltip="Probability of Precipitation" ></telerik:GridBoundColumn>
             <telerik:GridBoundColumn DataField="UvIndex" UniqueName="UvIndex" HeaderText="UV Index" Visible="false" AllowSorting="false" ></telerik:GridBoundColumn>
             <telerik:GridBoundColumn DataField="UvText" UniqueName="UvText" HeaderText="UV Text" Visible="false" AllowSorting="false" ></telerik:GridBoundColumn>
 
 
             <telerik:GridBoundColumn DataField="ModifiedDate" UniqueName="ModifiedDate" HeaderText="Last Updated" SortExpression="ModifiedDate" ReadOnly="true">
                 <ItemStyle CssClass="smc_form" />
             </telerik:GridBoundColumn>
              
              
         </Columns>
 
         <ItemTemplate>
             <table cellpadding="0" cellspacing="0" >
                 <col width="140px" />
                 <col width="30px" />
                 <col width="190px" />
                 <col width="80px" />
                 <col width="80px" />
                 <col width="50px" />
                 <col width="120px" />
                 <col width="80px" />
                 <col width="80px" />
                 <tr>
                     <td rowspan="2">
                         <h2><%# ForecastDayDisplay(Eval("ForecastName"), Eval("DayOfWeek"))%></h2>
                         <%#Eval("ModifiedDate", "{0:g}")%>
                     </td>
                     <td rowspan="2"><asp:ImageButton ID="ManualToggleButton" Height="24px" runat="server"  CausesValidation="false" /></td>
                     <td rowspan="2"><%# Eval("ConditionText")%></td>
                     <td align="right" ><%# Eval("TempLabel")%></td>
                     <td><%# Eval("Temp")%> <span class="smc_bodybold">°C</span></td>
                     <td>Text:</td>
                     <td><%# Eval("ShortText")%></td>
                     <td align="right" >UV Index:</td>
                     <td><%# NullIntDisplay(Eval("UvIndex"), "")%></td>
                 </tr>
                 <tr>
                     <td align="right" ><%# Eval("Temp2Label")%></td>
                     <td ><%# Eval("Temp2")%> <span class="smc_bodybold">°C</span></td>
                     <td><span title="Probability of precipitation" style="cursor: help" >P.O.P.:</span></td>
                     <td><%# NullIntDisplay(Eval("Pop"), "%")%></td>
                     <td align="right" >UV Text::</td>
                     <td><%# Eval("UvText")%></td>
                 </tr>
             </table>
              
         </ItemTemplate>
 
         <CommandItemSettings ShowAddNewRecordButton="false" ShowRefreshButton="false" />
         <CommandItemTemplate>
             <table>
                 <tr>
                     <td style="font-size: 13px; padding: 10px 10px; text-align: left; white-space: nowrap; font-weight: bold">
                         <asp:Label ID="labelCityName" runat="server" Text="Select" ></asp:Label>
                         <br /> City Weather Details
                     </td>
                     <td><br />
                         <asp:Button ID="btnUpdateAll" CssClass="smc_form" runat="server" Text="Save Now >" CommandName="UpdateAll"
                             Visible="true" OnClick="UpdateAll_Clicked" />
                     </td>
                     <td style="width: 50px;"> </td>
                     <td style="font-size: 11px; padding: 10px 10px; text-align: left; white-space: nowrap; font-weight: bold">
                         <asp:Panel ID="panelDataSources" runat="server">
                             <asp:Label runat="server" ID="Label1" Text="Data Source:"></asp:Label>
                             <br />
                             <asp:ImageButton Height="32" ID="btnAllManual" CommandName="SetAllAutoOff" ImageUrl="~/images/icons/auto_off.png" runat="server" ToolTip="Set all forecasts to Manual" AlternateText="All Manual" OnClientClick="return confirm('Are you sure you want to set all forecasts to Manual?');" /> 
                             <asp:ImageButton Height="32" ID="btnAllAutomated" CommandName="SetAllAutoOn" ImageUrl="~/images/icons/auto_on.png"  runat="server" ToolTip="Set all forecasts to Data Feed"  AlternateText="All Auto" OnClientClick="return confirm('Are you sure you want to set all forecasts to Data Feed?');" /> 
                         </asp:Panel>
                     </td>
                 </tr>
             </table>
         </CommandItemTemplate>
         <EditItemTemplate>
             <table cellpadding="0" cellspacing="0" >
                 <col width="140px" />
                 <col width="100px" />
                 <col width="190px" />
                 <col width="80px" />
                 <col width="80px" />
                 <col width="60px" />
                 <col width="140px" />
                 <col width="120px" />
                 <tr>
                     <td rowspan="2">
                         <h2><%# ForecastDayDisplay(Eval("ForecastName"), Eval("DayOfWeek"))%></h2>
                         <span class="smc_body"><%#Eval("ModifiedDate", "{0:g}")%></span>
                     </td>
                     <td rowspan="2">
                         <asp:RadioButton ID="radioManualEdit" runat="server" Text="Manual" Checked='<%# Bind("Manual") %>' GroupName="manualAuto" />
                         <br />
                         <asp:RadioButton ID="radioDataFeedEdit" runat="server" Text="Data Feed" Checked='<%# (!(Convert.ToBoolean(Eval("Manual")))) %>' GroupName="manualAuto" />
                     </td>
                     <td rowspan="2">
                         <telerik:RadComboBox ID="listWeather"  CssClass="smc_form" AppendDataBoundItems="true" DataSourceID="weatherListDataSource"
                                 DataTextField="weatherName" DataValueField="weatherId" Width="190px" runat="server" DropDownWidth="250px" Height="200px"
                                 SelectedValue='<%# Bind("ConditionId")%>' >
                             <Items>
                                 <telerik:RadComboBoxItem Text="-" Value="0" />
                             </Items>
                         </telerik:RadComboBox>
                     </td>
                     <td align="right"><%# Eval("TempLabel")%></td>
                     <td>
                         <asp:TextBox ID="txtTemp" runat="server" Width="25px" Text='<%# Bind("Temp")%>' CssClass="smc_form flow_right" MaxLength="5" AutoCompleteType="None" >
                         </asp:TextBox> <span class="smc_bodybold">°C</span>
                     </td>
                     <td align="right">Text:</td>
                     <td>
                         <asp:TextBox ID="txtShortText" runat="server" Width="100px" Text='<%# Bind("ShortText")%>' CssClass="smc_form" MaxLength="128" >
                         </asp:TextBox>
                     </td>
                     <td rowspan="2">UV Index:
                         <br />
                         <asp:DropDownList ID="listUvIndex" runat="server" CssClass="smc_form" Width="120px" SelectedValue='<%# Bind("UvIndex")%>' >
                             <asp:ListItem Text="-" Value="-1"></asp:ListItem>
                             <asp:ListItem Text="0 - Low" Value="0"></asp:ListItem>
                             <asp:ListItem Text="1 - Low" Value="1"></asp:ListItem>
                             <asp:ListItem Text="2 - Low" Value="2"></asp:ListItem>
                             <asp:ListItem Text="3 - Moderate" Value="3"></asp:ListItem>
                             <asp:ListItem Text="4 - Moderate" Value="4"></asp:ListItem>
                             <asp:ListItem Text="5 - Moderate" Value="5"></asp:ListItem>
                             <asp:ListItem Text="6 - High" Value="6"></asp:ListItem>
                             <asp:ListItem Text="7 - High" Value="7"></asp:ListItem>
                             <asp:ListItem Text="8 - Very High" Value="8"></asp:ListItem>
                             <asp:ListItem Text="9 - Veru High" Value="9"></asp:ListItem>
                             <asp:ListItem Text="10 - Very High" Value="10"></asp:ListItem>
                             <asp:ListItem Text="11+ - Extreme" Value="11"></asp:ListItem>
                         </asp:DropDownList>
                      
                     </td>
                 </tr>
                 <tr>
                     <td align="right"><%# Eval("Temp2Label")%></td>
                     <td>
                         <asp:TextBox ID="txtTemp2" runat="server" Width="25px" Text='<%# Bind("Temp2")%>' CssClass="smc_form flow_right" MaxLength="5" AutoCompleteType="None" >
                         </asp:TextBox> <span class="smc_bodybold">°C</span>
                     </td>
                     <td align="right">P.O.P.:</td>
                     <td>
                         <asp:TextBox ID="txtPop" runat="server" Width="25px" Text='<%# Bind("Pop")%>' CssClass="smc_form flow_right" MaxLength="5" AutoCompleteType="None">
                         </asp:TextBox> <span class="smc_bodybold">%</span>
                     </td>
                     <td></td>
                 </tr>
             </table>
               
 
         </EditItemTemplate>
     </MasterTableView>
 </telerik:RadGrid>
Jonathan
Top achievements
Rank 1
 answered on 18 May 2012
1 answer
77 views
Setting CurrentFilterFunction=Contains defaults to no filter while setting AutoPostBackOnFilter  as true.How to persist this setting?
Princy
Top achievements
Rank 2
 answered on 18 May 2012
3 answers
161 views
Hello,

I have a updatepanel containing a list of items based on a datasource.
the list container is a ordinary div, called listingpanel.
I have a combobox in a different div which is invisible when source is selected and saved with the combobox.

I also have a radcontextmenu with a edit button in order to bring the panel to change source in the combobox to the front.
Called "editpanel", a ordinary div.

By default the editpanel is visible and everything works fine.
When using the radcontextmenu to bring the editpanel to the front, a partial postback is triggered, editpanel is displayed but the radcombobox is not functioning, I can see the first item displayed in the list but I'm unable to change it, it wont drop and there is no hover in the combobox when i point my mouse at it, which it is by default.

If I remove the display: none on the editpanel with firebug it works, so I know there must be something with the partial postback.
in the partial postback, all the items are being rebound in the page_init method.

Any ideas ?

Thanks in advance,

Lars
Lars
Top achievements
Rank 1
 answered on 18 May 2012
4 answers
141 views
Typically Legend has a symbol equal to a circle. How do I have a rectangle instead of a circle?
Paulo
Top achievements
Rank 1
 answered on 18 May 2012
2 answers
238 views
I have a column on a grid that can contain data from one of two fields depending on some condition.  This condition is evaluated on a row by row basis, so one row can have data from one field, and the next field can have data from another field.

The pseudo logic looks like this:

if (record is user created)
field = date created
else
field = date assigned

How should I set the sort expression on this column?
Dennis
Top achievements
Rank 1
 answered on 18 May 2012
1 answer
127 views
Hi all,

During the OnItemDataBound, I'm using the GridDataItem to retrieve values from the grid. I'm able to do this without the regular columns. The instructions for the Template column said:  For template columns you must find the control in the grid cell and extract its value.please give an example.

Following is the aspx code for the column :
 <telerik: GridTemplateColumn HeaderText="Unloading Type" UniqueName="UnloadTypeColumn">
                        <ItemTemplate>
                                     <%#DataBinder.Eval(Container.Dataitem, "_UnloadTypeName")%>
                        </ItemTemplate>
</telerik:GridTemplateColumn>

Thanks in advance.
Shinu
Top achievements
Rank 2
 answered on 18 May 2012
3 answers
184 views
Hi,

We are trying to resolve a problem from two days now : We are unable to upload files in the RadGrid from a RadUpload.
We found some resolution sample on your forum but none of them could work on our solution because of the UpdatePanel.

Some explanation of the structure of our application :

UpdatePanel containing multiple WebControls => our RadGrid is in one of them.

We couldn't change now the structure of this application : We couldn't remove the UpdatePanel

I took out the code making us crazy, to put it in a project sample with to retrieve the error.

<asp:Content ID="__functionLeft" ContentPlaceHolderID="MainContent" runat="Server">
 
<asp:UpdatePanel ID="__upDatePanel" runat="server">
    <ContentTemplate>
 
        <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
        // <![CDATA[
            //On insert and update buttons click temporarily disables ajax to perform upload actions
            function conditionalPostback(sender, eventArgs) {
                var theRegexp = new RegExp("\.UpdateButton$|\.PerformInsertButton$", "ig");
                if (eventArgs.get_eventTarget().match(theRegexp)) {
                    var upload = $find(window['UploadId']);
 
                    //AJAX is disabled only if file is selected for upload
                    if (upload.getFileInputs()[0].value != "") {
                        eventArgs.set_enableAjax(false);
                    }
                }
            }
 
            function validateRadUpload(source, e) {
                e.IsValid = false;
 
                var upload = $find(source.parentNode.getElementsByTagName('div')[0].id);
                var inputs = upload.getFileInputs();
                for (var i = 0; i < inputs.length; i++) {
                    //check for empty string or invalid extension
                    if (inputs[i].value != "" && upload.isExtensionValid(inputs[i].value)) {
                        e.IsValid = true;
                        break;
                    }
                }
            }
             
            // ]]>
        </script>
    </telerik:RadCodeBlock>
     
        <telerik:RadGrid ID="__linksRadGrid" runat="server"
                        AllowMultiRowEdit="false"
                        ShowStatusBar="true"
                        GridLines="None"                                                
                        AllowPaging="False"  
                        AllowAutomaticUpdates="false"
                        AllowAutomaticInserts="false"
                        OnPreRender="LinksGridView_PreRender"
                        OnItemCreated="LinksGridView_ItemCreated"
                        OnNeedDataSource="LinksRadGrid_NeedDataSource"                      
                        OnInsertCommand="LinksRadGrid_InsertCommand"
                        OnUpdateCommand="LinksRadGrid_UpdateCommand"
                        OnDeleteCommand="LinksRadGrid_DeleteCommand"
                        OnItemDataBound="LinksRadGrid_ItemDataBound"
                        OnItemCommand="LinksRadGrid_ItemCommand"
                        OnEditCommand="LinksRadGrid_EditCommand"
                        AllowSorting="true"
                        Skin="Transparent"
                        Width="450px" >
                    <MasterTableView AutoGenerateColumns="False"
                            DataKeyNames="IdAttachment"
                            CommandItemDisplay="Bottom" >
                        <PagerStyle Mode="NextPrevAndNumeric" />
                        <CommandItemTemplate>
                            <div style="padding: 5px 5px;">
                                <asp:ImageButton ID="imgInsert" runat="server"
                                        CommandName="InitInsert"
                                        AlternateText="Insert New Record"                
                                        ToolTip = "Insert New Record" />
                                  
                                <asp:ImageButton ID="imgRefresh" runat="server" 
                                        CommandName="RebindGrid"
                                        AlternateText="Refresh the grid"                
                                        ToolTip = "Refresh the grid" />
                            </div>
                        </CommandItemTemplate>
                        <Columns>
                            <telerik:GridEditCommandColumn ButtonType="ImageButton"
                                    UniqueName="EditAttachmentLinks"
                                    ItemStyle-Width="30px"
                                    ItemStyle-HorizontalAlign="Center"/>
 
                            <telerik:GridBoundColumn DataField="Title"
                                    DataType="System.String"
                                    HeaderText="Title"
                                    SortExpression="Title"
                                    UniqueName="Title">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="Description"
                                    DataType="System.String"
                                    HeaderText="Description"
                                    SortExpression="Description"
                                    UniqueName="Description">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="AttachmentType"
                                    DataType="System.String"
                                    HeaderText="AttachmentType"
                                    SortExpression="AttachmentType"
                                    UniqueName="AttachmentType"
                                    Display="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="Url"
                                    DataType="System.String"
                                    HeaderText="Url"
                                    SortExpression="Url"
                                    UniqueName="URL"
                                    Display="false">
                            </telerik:GridBoundColumn>
                            <telerik:GridTemplateColumn 
                                    HeaderText="Type" 
                                    UniqueName="Type"
                                    HeaderStyle-HorizontalAlign="Center"
                                    ItemStyle-HorizontalAlign="Center" >
                                <ItemTemplate>
                                    <asp:ImageButton ID="__attachedTypeImageButton" runat="server" />
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
 
                            <telerik:GridButtonColumn CommandName="Delete" ButtonType="ImageButton"
                                    UniqueName="DeleteAttachmentLinks"
                                    ConfirmText="Delete this record?"
                                    ConfirmDialogType="RadWindow"
                                    ConfirmTitle="Delete"
                                    ItemStyle-Width="30px"
                                    ItemStyle-HorizontalAlign="Center"/>
 
                        </Columns>
                        <EditFormSettings EditFormType="Template">
                            <EditColumn UniqueName="EditCommandColumn1">
                            </EditColumn>
                            <FormTemplate>
                                <table cellspacing="2" cellpadding="1" width="100%" border="0">
                                    <tr>
                                        <td>
                                            <asp:Label ID="__titleLabel" runat="server"
                                                    Text="Title">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="__titleTextBox" runat="server"
                                                    Width="100px"
                                                    Text='<%# Bind("Title") %>' >
                                            </asp:TextBox>
                                            <span style="color:Red; font-weight:bold">*</span>
                                            <br />
                                            <asp:RequiredFieldValidator ID="__titleTextBoxRFValidator" runat="server"
                                                    ControlToValidate="__titleTextBox"
                                                    Display="Dynamic"
                                                    ErrorMessage="Please, enter a title!" 
                                                    SetFocusOnError="true" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Label ID="__decriptionLabel" runat="server"
                                                    Text="Description">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="__decriptionTextBox" runat="server"
                                                    Width="100px"
                                                    TextMode="MultiLine"
                                                    Rows="4"
                                                    Text='<%# Bind("Description") %>'>
                                            </asp:TextBox>
                                            <span style="color:Red; font-weight:bold">*</span>
                                            <br />
                                            <asp:RequiredFieldValidator ID="__decriptionTextBoxRFValidator" runat="server"
                                                    ControlToValidate="__decriptionTextBox"
                                                    Display="Dynamic"
                                                    ErrorMessage="Please, enter a description!" 
                                                    SetFocusOnError="true" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Label ID="__URLLabel" runat="server"
                                                    Text="URL">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <asp:TextBox ID="__urlTextBox" runat="server"
                                                    Width="255px"
                                                    Text='<%# Bind("URL") %>' >
                                            </asp:TextBox>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td colspan="2">
                                            <asp:Label ID="__orLabel" runat="server"
                                                    Text="or">
                                            </asp:Label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Label ID="__fileUploadLabel" runat="server"
                                                    Text="File">
                                            </asp:Label>
                                        </td>
                                        <td>
                                            <div id="__fileUploadDiv" runat="server">
 
                                                <telerik:RadUpload ID="__fileUpload" runat="server"
                                                        ControlObjectsVisibility="None"
                                                        MaxFileInputsCount="1"                                                    
                                                        />
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                         <td align="right" colspan="2">
                                            <asp:Button ID="btnUpdate" runat="server"
                                                    Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>'
                                                    CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
                                                    CausesValidation="True" >
                                            </asp:Button
                                              
                                            <asp:Button  ID="btnCancel" runat="server"
                                                    Text="Cancel"
                                                    CausesValidation="False"
                                                    CommandName="Cancel">
                                            </asp:Button >
                                        </td>
                                    </tr>
                                </table>
                            </FormTemplate>
                        </EditFormSettings>
                    </MasterTableView>
                </telerik:RadGrid>
 
        </ContentTemplate>
    </asp:UpdatePanel>
<script type="text/javascript" >
 
    function LinksFileUpload_OnChange(clientidTextBox) {
 
        document.getElementById(clientidTextBox).value = "";
    }
 
    function LinksUrlTextBox_OnChange(clientIdDIVFileUpload) {
 
        //We couldn't change the input file value, so we reset the DIV container
        document.getElementById(clientIdDIVFileUpload).innerHTML = document.getElementById(clientIdDIVFileUpload).innerHTML;
 
    }
 
     
</script>
 
</asp:Content>

The code behind code :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.ComponentModel;
using Telerik.Web.UI;
using System.Text;
using System.Web.UI.HtmlControls;
using System.IO;
 
 
public class ListHelper {
 
    public static DataTable ToDataTable<T>(IList<T> data) {
 
        PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
        DataTable table = new DataTable();
 
        for (int i = 0; i < props.Count; i++) {
            PropertyDescriptor prop = props[i];
            table.Columns.Add(prop.Name, prop.PropertyType);
        }
 
        object[] values = new object[props.Count];
        foreach (T item in data) {
            for (int i = 0; i < values.Length; i++) {
                values[i] = props[i].GetValue(item);
            }
            table.Rows.Add(values);
        }
 
        return table;
    }
 
}
 
public class GWAttachment {
 
    #region Accessor
 
    private string _title;
    public string Title {
        get { return this._title; }
        set { this._title = value; }
    }
 
    private string _description;
    public string Description {
        get { return this._title; }
        set { this._title = value; }
    }
 
    private string _url;
    public string Url {
        get { return this._url; }
        set { this._url = value; }
 
    }
 
    private string _fileName;
    public string FileName {
        get { return this._fileName; }
        set { this._fileName = value; }
    }
 
    private int _idAttachment;
    public int IdAttachment {
        get { return this._idAttachment; }
        set { this._idAttachment = value; }
 
    }
 
    private int _attachmentType;
    public int AttachmentType {
        get { return this._attachmentType; }
        set { this._attachmentType = value; }
 
    }
 
 
    #endregion
 
}
 
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e) {
 
    }
 
 
    #region Links
 
    protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) {
        if (e.Item is GridEditableItem && e.Item.IsInEditMode) {
        }
    }
 
 
    #region DataSource
 
    protected void LinksObjectDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) {
 
    }
 
    #endregion
 
 
    #region Gridview
 
    protected void LinksGridView_PreRender(object sender, EventArgs e) {
 
    }
 
    protected void LinksGridView_ItemCreated(object sender, GridItemEventArgs e) {
 
    }
 
 
    protected void DisableControls(ControlCollection controls) {
        foreach (Control c in controls) {
            if (c is WebControl) {
                ((WebControl)c).Enabled = false;
            }
 
            DisableControls(c.Controls);
        }
    }
 
 
    protected void LinksRadGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) {
 
        GWAttachment att1 = new GWAttachment();
        att1.IdAttachment = 1;
        att1.Title = "Test 1";
        att1.Description = "Decription 1";
        att1.Url = "http://www.google.com";
        att1.AttachmentType = 3;
 
        GWAttachment att2 = new GWAttachment();
        att2.IdAttachment = 2;
        att2.Title = "Test 2";
        att2.Description = "Decription 2";
        att2.Url = "http://www.google.com/test";
        att2.AttachmentType = 4;
         
        List<GWAttachment> attachmentList = new List<GWAttachment>();
        attachmentList.Add(att1);
        attachmentList.Add(att2);
 
        DataTable dt = ListHelper.ToDataTable<GWAttachment>(attachmentList);
 
        this.__linksRadGrid.DataSource = dt;
    }
 
    protected void LinksRadGrid_ItemDataBound(object sender, GridItemEventArgs e) {
 
        if (e.Item is GridDataItem) {
 
            GridDataItem gridDataItem = (GridDataItem)e.Item;
 
 
            int attachedType = int.Parse(gridDataItem["AttachmentType"].Text);
            ImageButton image = (ImageButton)gridDataItem["Type"].FindControl("__attachedTypeImageButton");
 
            if (attachedType == 3
                && !string.IsNullOrEmpty(gridDataItem["URL"].Text)) {
 
                int idDocument = this.GetDocumentLinksId(gridDataItem["URL"].Text);
 
                if (idDocument > 0) {
                    image.OnClientClick = this.BuildDocumentPopupScript(idDocument);
                }
                else {
                    this.ShowImageError(image, "Error : unable to parse the internal document id! Please correct the URL.");
                }
            }
            else if (attachedType == 4
                    && !string.IsNullOrEmpty(gridDataItem["URL"].Text)) {
 
                image.OnClientClick = this.WindowsOpenPopup(gridDataItem["URL"].Text);
            }
            else if (attachedType == 5) {
 
                int idAttachment = int.Parse(gridDataItem.GetDataKeyValue("IdAttachment").ToString());
 
                image.OnClientClick = this.GetAttachmentLinksUrl(idAttachment);
            }
            else {
 
            }
        }
        else if (e.Item is GridEditFormItem
                && e.Item.IsInEditMode) {
            GridEditFormItem editItem = e.Item as GridEditFormItem;
 
            TextBox urlTxtBox = (TextBox)editItem.FindControl("__urlTextBox");
            RadUpload linksFileUpload = (RadUpload)editItem.FindControl("__fileUpload");
            Control linksFileUploadDIV = (Control)editItem.FindControl("__fileUploadDiv");
 
 
            if (urlTxtBox != null
                && linksFileUpload != null
                && linksFileUploadDIV != null) {
 
                // It is forbidden to reset a FileUpload, so we reset the dive container!
                string onChangeEventUrlTxtBox = "LinksUrlTextBox_OnChange('" + linksFileUploadDIV.ClientID + "')";
                string onChangeEventLinksFileUpload = "LinksFileUpload_OnChange('" + urlTxtBox.ClientID + "')";
 
                urlTxtBox.Attributes.Add("onchange", onChangeEventUrlTxtBox);
                linksFileUpload.Attributes.Add("onchange", onChangeEventLinksFileUpload);
            }
        }
    }
 
    #region Attachment file
 
    protected String GetAttachmentLinksUrl(int idAttachment) {
 
        String page = "~/Attachment.aspx";
        page = VirtualPathUtility.ToAbsolute(page);
 
        StringBuilder url = new StringBuilder(page);
        url.AppendFormat("?IdAttachment={0}&Type={1}", idAttachment, 3);
 
        string javaScript = "javascript:window.open('{0}','popup{1}','width=650,height=750,scrollbars=yes');return false;";
 
        return String.Format(javaScript, url.ToString(), idAttachment);
    }
 
    #endregion
 
    protected void LinksRadGrid_ItemCommand(object source, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.DownloadAttachmentCommandName) {
            GridEditFormItem editFormItem = (GridEditFormItem)e.Item;
        }
    }
 
    protected void LinksRadGrid_EditCommand(object source, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.EditCommandName
                && e.Item is GridDataItem) {
 
            GridDataItem gridDataItem = (GridDataItem)e.Item;
 
            TextBox urlTxtBox = (TextBox)gridDataItem.FindControl("__urlTextBox");
            RadUpload linksFileUpload = (RadUpload)gridDataItem.FindControl("__fileUpload");
 
            if (urlTxtBox != null
                && linksFileUpload.UploadedFiles != null) {
 
                urlTxtBox.Attributes.Add("onchange", "LinksUrlTextBox_OnChange(" + linksFileUpload.ClientID + ")");
                linksFileUpload.Attributes.Add("onchange", "LinksFileUpload_OnChange(" + urlTxtBox.ClientID + ")");
            }
        }
    }
 
    protected void LinksRadGrid_InsertCommand(object sender, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.PerformInsertCommandName) {
            if (e.Item is GridEditFormItem) {
                GridEditFormItem gridDataItem = (GridEditFormItem)e.Item;
 
                this.SaveAttachment(gridDataItem, false);
 
                this.__linksRadGrid.Rebind();
            }
        }
    }
 
    protected void LinksRadGrid_UpdateCommand(object sender, GridCommandEventArgs e) {
 
        if (e.CommandName == RadGrid.UpdateCommandName) {
            if (e.Item is GridEditFormItem) {
                GridEditFormItem gridDataItem = (GridEditFormItem)e.Item;
 
                this.SaveAttachment(gridDataItem, true);
                 
                this.__linksRadGrid.Rebind();
            }
        }
    }
    protected void LinksRadGrid_DeleteCommand(object sender, GridCommandEventArgs e) {
 
        GridEditableItem editedItem = e.Item as GridEditableItem;
    }
 
    #region Save the Attachment of the document
 
    private void SaveAttachment(GridEditFormItem gridDataItem, bool isAttachmentUpdate) {
 
        int idAttachment = 0;
 
        if (isAttachmentUpdate) {
            idAttachment = Convert.ToInt32(gridDataItem.GetDataKeyValue("IdAttachment"));
        }
 
        TextBox titleTxtBox = (TextBox)gridDataItem.FindControl("__titleTextBox");
        TextBox descriptionTxtBox = (TextBox)gridDataItem.FindControl("__decriptionTextBox");
        TextBox urlTxtBox = (TextBox)gridDataItem.FindControl("__urlTextBox");
        RadUpload linksFileUpload = (RadUpload)gridDataItem.FindControl("__fileUpload");
 
        string title = string.Empty;
        string description = string.Empty;
        string url = string.Empty;
 
        if (titleTxtBox != null) title = titleTxtBox.Text;
        if (descriptionTxtBox != null) description = descriptionTxtBox.Text;
        if (urlTxtBox != null) url = urlTxtBox.Text;
 
        GWAttachment attachment = new GWAttachment();
 
        attachment.Title = title;
        attachment.Description = description;
        attachment.Url = url;
 
        Stream file = null;
 
        if (linksFileUpload != null && linksFileUpload.UploadedFiles != null
            && urlTxtBox != null && string.IsNullOrEmpty(url)) {
 
            attachment.AttachmentType = 5;
 
            if (linksFileUpload.UploadedFiles != null
                && linksFileUpload.UploadedFiles.Count == 1) {
 
                UploadedFile uploadedFile = linksFileUpload.UploadedFiles[0];
                file = uploadedFile.InputStream;
            }
        }
 
        //If a file is also defined, we take only the url when it exist too
        if (urlTxtBox != null && !string.IsNullOrEmpty(url)) {
 
            if (url.Contains(HttpContext.Current.Request.Url.Host)) {
                attachment.AttachmentType = 3;
            }
            else {
                attachment.AttachmentType = 4;
            }
        }
 
    }
 
    #endregion
 
    private string BuildDocumentPopupScript(int documentId) {
 
        string popupScript = string.Empty;
 
        string clientUrl = ResolveClientUrl("~/DetailPopup.aspx");
        clientUrl = string.Format("{0}?idDocument={1}", clientUrl, documentId);
 
        popupScript = string.Format("javascript:window.open('{0}','{1}','width=800,height=750,resizable=yes,scrollbars=yes');return false;", clientUrl, 10);
 
        return popupScript;
    }
 
    private string WindowsOpenPopup(string url) {
 
        string popupScript = string.Empty;
 
        popupScript = string.Format(@"javascript:window.open('{0}','{1}','width=800,height=750,resizable=yes,scrollbars=yes');return false;", url, url);
 
        return popupScript;
    }
 
 
    private int GetDocumentLinksId(string url) {
 
        int idDocumentLinks = -1;
 
        var uri = new Uri(url);
        var query = HttpUtility.ParseQueryString(uri.Query);
 
        return idDocumentLinks;
    }
 
    private ImageButton ShowImageError(ImageButton imageBut, string message) {         
 
        return imageBut;
    }
 
 
    #endregion
 
 
    #endregion
 
}


Does someone have a solution ??

Thank you for your help
Milena
Telerik team
 answered on 18 May 2012
3 answers
475 views
I have a rad grid, which returns a list of data.  I have a subgrid, which should return details in another grid based on the id of the record in the master table and the value of a item selected in a dropdown list.  The subgrid passes 2 parameters to a SQL server stored proc.

If I run the subgrid outside of the hierarchical grid the data is returned no problems.  I followed the example in the demo and have a label that evaluates a datakey.  If I make the label visible the Id displays properly.  However the grid below does not show any data.

Any help would be greatly appreciated.
Andrey
Telerik team
 answered on 18 May 2012
6 answers
227 views
Hello,

I am looking for some code snippet, that will enable the ContextMenu of my TreeView to show.  I tried following, but I think it wants some parameter to be passed along with show(parameter); and I do not know what to pass here.  I have tried passing in the node, but that did not work.

function ShowContextMenu() {
    var tree = $find('tvEstimate');
    var node = tree.get_selectedNode();
    if (node) {
        var menu = node.get_contextMenu();
        menu.show();
    } 
}

The above code gets triggerd by clicking a button,  I have also debugged the above code, and there are valid values in each object - tree, node and menu.  They all have proper values in them, but menu.show() does not show the context menu.  Any suggestion?

Thanks.
Bozhidar
Telerik team
 answered on 18 May 2012
1 answer
50 views
http://demos.telerik.com/aspnet-ajax/treelist/examples/integration/discussionboard/defaultcs.aspx 

Adding single quotes to any of the fields and hitting submit causes the form to blow up.
Tsvetina
Telerik team
 answered on 18 May 2012
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Iron
Iron
Iron
Atul
Top achievements
Rank 1
Iron
Iron
Iron
Alexander
Top achievements
Rank 1
Veteran
Iron
Serkan
Top achievements
Rank 1
Iron
Shawn
Top achievements
Rank 1
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Iron
Iron
Iron
Atul
Top achievements
Rank 1
Iron
Iron
Iron
Alexander
Top achievements
Rank 1
Veteran
Iron
Serkan
Top achievements
Rank 1
Iron
Shawn
Top achievements
Rank 1
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?