I'm trying to put radrating control within RadGrid control for multiple items. This is what I have currently:
<telerik:RadGrid ID="RadGrid2" runat="server" OnItemDataBound="RadGrid2_ItemDataBound" OnNeedDataSource="RadGrid2_NeedDataSource">
<ClientSettings AllowDragToGroup="False">
</ClientSettings>
<MasterTableView>
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<Columns>
<telerik:GridBoundColumn DataField="Property.PropertyName" HeaderStyle-Width="100px" DataFormatString="{0:g}" HeaderText="Property" SortExpression="Property.PropertyName">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="TestimonialHtml" DataFormatString="{0:g}" HeaderText="Review" SortExpression="TestimonialHtml">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="TestimonialDate" DataFormatString="{0:g}" HeaderText="Review Date" SortExpression="TestimonialDate">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Task" ItemStyle-Wrap="false">
<ItemTemplate>
<telerik:RadRating runat="server" ID="TestimonialRating" Value="RatingHelper" Precision="Half"></telerik:RadRating>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
While the gridboundcolumns are working fine, the radrating control doesn't want to accept the RatingHelper value and I'm getting this error:
Cannot create an object of type 'System.Decimal' from its string
representation 'RatingHelper' for the 'Value' property.
What should I change to make this work?
Take a look here: http://www.telerik.com/help/aspnet-ajax/grid-accessing-cells-and-rows.html. See how to access the rating in the OnItemDataBound event so you can set its value as needed. Direct binding in the markup is not going to work like this, as McGarnagle noted.
Another option is to use Eval() statements like shown here: http://demos.telerik.com/aspnet-ajax/rating/examples/gridrating/defaultcs.aspx.
Related
I new to telerik and fighting my way up the learning curve.
I have a RadGrid that I'm populating with a linq query. I'm using a
GridTemplateColumn with a ComboBox for new and edit of one of the fields. The problem is the ComboBox doesn't show on the insert or edit screen. The fields set as GridDropDownColumn do show on the insert or edit. I need GridTemplateColumn solution because I need to run some code once the dropdown list has been selected.
What am I missing here? I'm trying to work from a Telerik example. It's the Release field that is giving me the problem.
<telerik:RadGrid RenderMode="Lightweight" ID="grdData" runat="server"
AllowPaging="true"
AllowSorting="true"
AutoGenerateColumns="false"
AllowAutomaticInserts="true"
AllowAutomaticUpdates="true"
OnNeedDataSource="grdData_OnNeededDataSource"
OnItemDataBound="grdData_OnItemDataBound"
OnUpdateCommand="grdData_OnUpdateCommand" >
<ClientSettings>
<Selecting AllowRowSelect="True" />
<Scrolling AllowScroll="True" UseStaticHeaders="True" />
</ClientSettings>
<SelectedItemStyle BackColor="LightYellow" />
<MasterTableView Width="100%"
DataKeyNames="TID"
EditMode="EditForms"
AutoGenerateColumns="false"
InsertItemDisplay="Top"
CommandItemDisplay="Top"
InsertItemPageIndexAction="ShowItemOnFirstPage">
<Columns>
<telerik:GridEditCommandColumn></telerik:GridEditCommandColumn>
<telerik:GridBoundColumn DataField="TID" UniqueName="TID"
HeaderText="TID" ReadOnly="true"></telerik:GridBoundColumn>
<telerik:GridDropDownColumn UniqueName="Employee" ListDataMember="Employee"
SortExpression="Employee" ListTextField="Employee" ListValueField="Employee"
HeaderText="Employee" DataField="Employee"
DropDownControlType="RadComboBox"
EnableEmptyListItem="true" EmptyListItemText="Make a choice" EmptyListItemValue=""
/>
<telerik:GridDropDownColumn UniqueName="Job" ListDataMember="Job"
SortExpression="Job" ListTextField="Job" ListValueField="Job"
HeaderText="Job" DataField="Job"
DropDownControlType="RadComboBox"
EnableEmptyListItem="true" EmptyListItemText="Make a choice" EmptyListItemValue=""
/>
<telerik:GridTemplateColumn UniqueName="Release"
HeaderText="Release"
HeaderStyle-HorizontalAlign="Center"
SortExpression="Release"
ItemStyle-Width="170px" HeaderStyle-Width="80px"
DataField="Release" >
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "Release")%>
</ItemTemplate>
<telerik:EditItemTemplate>
<telerik:RadComboBox runat="server" ID="rcbRelease"
AutoPostBack="true"
EnableLoadOnDemand="true"
DataTextField="Release"
DataValueField="Release"
Text='<% #Bind("Release")%>'
EnableEmptyListItem="true"
EmptyListItemText="Make a choice"
EmptyListItemValue="NR"
OnDataBinding="rcbRelease_OnDataBinding"
></telerik:RadComboBox>
</telerik:EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="ComponentJob" UniqueName="ComponentJob" HeaderText="ComponentJob"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Operation" UniqueName="Operation" HeaderText="Operation"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Quantity" UniqueName="Quantity" HeaderText="Quantity"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Priority" UniqueName="Priority" HeaderText="Priority"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Status" UniqueName="Status" HeaderText="Status"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="LastEdit" UniqueName="LastEdit" HeaderText="LastEdit"></telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
I think your having trouble with the ComboBox because you have EnableLoadOnDemand=true but you have not subscribed to the ItemsRequested event. See Load On Demand Overview for details.
Since you mention your new to the controls, you might want to get the ComboBox LoadOnDemand working outside of the grid first.
Try removing the telerik namespace/prefix from the EditItemTemplate declaration:
Change this:
<telerik:EditItemTemplate>
<%-- RadComboBox --%>
</telerik:EditItemTemplate>
To this:
<EditItemTemplate>
<%-- RadComboBox --%>
</EditItemTemplate>
Also, please share with us which documentation were you following so that we can double check and report the documentation error.
Im working in ASP.net with C#, i need help to correct or have an approach to get what i need.
Im working with gridview, data select a set of data that will be used depending of its primarykey into another table.
On the runtime on client side, i need to collect on the onclick event, the sid column of each row and put it into a hidden field. However, the code below, is not working for me as the <%#eval("sid"); %>! is being read as a string, than the current row value.
What i need is the checkbox once clicked alert(5) instead of alert('<%#eval("sid"); %>!'); that is what is currently doing.
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbSelect" onclick="javascript:alert('<%#eval("sid"); %>!');"/>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataTextField="nombre" NavigateUrl="http://www.google.com" HeaderText="direccion"/>
<asp:BoundField DataField="sid" HeaderText="sid" InsertVisible="False"
ReadOnly="True" SortExpression="sid" />
<asp:BoundField DataField="nombre_archivo" HeaderText="nombre_archivo"
SortExpression="nombre_archivo" />
</Columns>
If further information is needed, please ask what you need me to add to the question.
Try this, worked for me:
<asp:CheckBox runat="server" ID="cbSelect" onclick='<%# "javascript:alert(" + Eval("sid") + " );" %>'/>
I believe Eval is case-sensitive, and you don't need that semi-colon:
<%# Eval("sid") %>
Try changing your code to this. And your Eval() was actually eval() which is invalid.
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server"
ID="cbSelect"
onclientclick='<%#string.Format("javascript:alert('{0}');",Eval("sid"))%>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataTextField="nombre"
NavigateUrl="http://www.google.com" HeaderText="direccion"/>
<asp:BoundField DataField="sid" HeaderText="sid" InsertVisible="False"
ReadOnly="True" SortExpression="sid" />
<asp:BoundField DataField="nombre_archivo" HeaderText="nombre_archivo"
SortExpression="nombre_archivo" />
</Columns>
I have an issue working with the telerik radgrid control. I am trying to use javascript to access a textbox when the grid is in edit mode.
My code looks like the following:
<telerik:RadGrid ID="RadGrid1" GridLines="None" runat="server" AllowAutomaticDeletes="True"
AllowSorting="False" AllowAutomaticInserts="True" PageSize="10" AllowAutomaticUpdates="True"
OnItemDataBound="RadGrid1_ItemDataBound" AllowMultiRowEdit="False" AllowPaging="False"
DataSourceID="DataSource1" OnItemUpdated="RadGrid1_ItemUpdated" AllowFilteringByColumn="False"
OnItemDeleted="RadGrid1_ItemDeleted" OnItemInserted="RadGrid1_ItemInserted" AutoGenerateColumns="false"
OnDataBound="RadGrid1_DataBound">
<PagerStyle Mode="NextPrevAndNumeric" />
<MasterTableView Width="100%" CommandItemDisplay="TopAndBottom" DataKeyNames="Id"
DataSourceID="DataSource1" HorizontalAlign="NotSet" EditMode="EditForms">
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
<ItemStyle CssClass="MyImageButton" />
</telerik:GridEditCommandColumn>
<telerik:GridButtonColumn ConfirmText="Delete this product?" ConfirmDialogType="RadWindow"
ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" Text="Delete"
UniqueName="DeleteColumn">
<ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
</telerik:GridButtonColumn>
<telerik:GridBoundColumn DataField="Id" HeaderText="Id" Display="false" ReadOnly="true" />
<telerik:GridBoundColumn DataField="Manufacturer" HeaderText="Manufacturer" />
<telerik:GridBoundColumn DataField="Description" HeaderText="Description" />
<telerik:GridBoundColumn DataField="Configuration" HeaderText="Configuration" />
<telerik:GridDropDownColumn DataField="TypeId" HeaderText="Type" UniqueName="PartsType"
DataSourceID="PartsTypeDataSource" ListTextField="Name" ListValueField="Id" />
What I am after is that, during edit mode, when the user selects a certain value from the dropdown list 'PartsType', one of the other fields - eg 'Manufacturer' will be shown/hide.
I could get the dropdown value (in javascript) by attaching a javascript function to the dropdownlist:
function PartsTypeIndexChanged(sender, args) {
var selectedValue = args.get_item()._text;
}
I just dont know which method to use to get the 'Manufacturer' field, so I can show/hide it.
Could anyone please help?
Many thanks.
A possible approach could be to use RadControls client-side static API
$telerik.findElement(gridDOMElement, "Manufacturer");
This will help you access the column editor - I suppose it is ASP.NET TextBox rendered as input. For numeric or date columns the editor will probably be Telerik client component so you have to use findControl instead of findElement.
More info here:
http://www.telerik.com/help/aspnet-ajax/telerik-static-client-library.html
Good luck
Please check below link.
http://www.telerik.com/community/forums/aspnet-ajax/grid/set-controls-attribute-like-enable-disable-on-insert-edit-mode-using-jquery.aspx
I'm instantiating an asp:Button inside a data-bound asp:GridView through template fields. Some of the buttons are supposed to call a server-side function, but for some weird reason, it doesn't. All the buttons do when you click them is fire a postback to the current page, doing nothing, effectively just reloading the page.
Below is a fragment of the code:
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" CssClass="l2 submissions" ShowHeader="false">
<Columns>
<asp:TemplateField>
<ItemTemplate><asp:Panel ID="swatchpanel" CssClass='<%# Bind("status") %>' runat="server"></asp:Panel></ItemTemplate>
<ItemStyle Width="50px" CssClass="sw" />
</asp:TemplateField>
<asp:BoundField DataField="description" ReadOnly="true">
</asp:BoundField>
<asp:BoundField DataField="owner" ReadOnly="true">
<ItemStyle Font-Italic="true" />
</asp:BoundField>
<asp:BoundField DataField="last-modified" ReadOnly="true">
<ItemStyle Width="100px" />
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="viewBtn" cssclass='<%# Bind("sid") %>' runat="server" Text="View" OnClick="viewBtnClick" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
The viewBtn above should call the viewBtnClick() function on server-side. I do have that function defined, along with a proper signature (object,EventArgs). One thing that may be of note is that this code is actually inside an ASCX, which is loaded in another ASCX, finally loaded into an ASPX.
Any help or insight into the matter will be SO appreciated. Thanks!
(oh, and please don't mind my trashy HTML/CSS semantics - this is still in a very,very early stage :p)
Is AutoWireupEvents set to true?
If your GridView is being databound during Page_Prerender, the asp:button in question doesn't exist when postback events are processed.
Try binding the gridview during Page_Load, or using the GridView's OnItemCommand event rather than the button's OnClick.
I have a simple use for RadGrid that involves binding it to a list of strings
i.e. using: list<string>
The bind works OK and the data displays in the grid. However, the header says "Item", and there are other aspects of the column I'd like to be able to customize. I've tried to set the "DataField" property of the column on the ascx page:
<telerik:GridTemplateColumn UniqueName="column"
DataField="" HeaderText="Omniture Codes">
however, it seems to want the name of a data field, as in what you would get with a datatable object, but not with a list.
Does anyone know a way to bind the column to the list, or have another idea for a work-around?
I think you should use a GridBoundColumn instead of the GridTemplateColumn and disable AutoGenerateColumns.
E.g. the following works for me:
ASPX:
<telerik:RadGrid ID="grid" runat="server" AutoGenerateColumns="false">
<MasterTableView>
<Columns>
<telerik:GridBoundColumn DataField="" HeaderText="MyHeaderText">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
Code-behind:
protected void Page_Load(object sender, EventArgs e)
{
List<string> data = new List<string> {"a", "b", "c"};
grid.DataSource = data;
}
You have to try something like this with the RadGrid:
<Columns>
<telerik:GridBoundColumn DataField="AddrLine1" HeaderText="Address Line 1" SortExpression="AddrLine1" UniqueName="AddrLine1">
<HeaderStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Left" Wrap="True" />
<ItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"Font-Underline="False" HorizontalAlign="Left" Wrap="True" />
</telerik:GridBoundColumn>
</Columns>
you may also use Item Template property of radgrid to generate any desgin..
like
<ItemTemplate>
<div style="width:277px; text-align:left;">
<span style=" font-size:11px;"> Tdata1:</span>
<%# Eval("data1")%>
<br />
<span> data2:</span>
<%# Eval("data2")%>
<br />
</div>
</ItemTemplate>
<Columns>
<telerik:GridBoundColumn DataField="data1" HeaderText="data1" SortExpression="data1" UniqueName="data1">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="data2" HeaderText="data2" SortExpression="data2" UniqueName="data2">
</telerik:GridBoundColumn>
</Columns>