I have a SQL procedure which returns a dataset which is bound to a datatable in the code. This contains HotelName, Obsolete and Rating columns at present.
I've attached the code below (except the class file which handles the data call). When I press the button I get the hotel names and the checkbox is set correctly, however the rating control does not display. However if I press the button again, or press the HotelName header to sort the column the rating then appears...anyone know what I'm not doing...?
Cheers
Cliff
Default.aspx
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%
@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head runat="server">
<title></title>
</
head>
<
body>
<form id="form1" runat="server">
<div>
<telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server">
</telerik:RadStyleSheetManager>
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<telerik:RadSkinManager ID="RadSkinManager1" runat="server" Skin="Windows7">
</telerik:RadSkinManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="Button1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadTextBox1" />
<telerik:AjaxUpdatedControl ControlID="RadGrid1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadTextBox ID="RadTextBox1" runat="server">
</telerik:RadTextBox>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<telerik:RadGrid
ID="RadGrid1" runat="server" AutoGenerateColumns="False" GridLines="None"
onneeddatasource="RadGrid1_NeedDataSource" Visible="False"
onitemdatabound="RadGrid1_ItemDataBound" AllowSorting="True">
<MasterTableView>
<RowIndicatorColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<Columns>
<telerik:GridTemplateColumn Visible="False">
<ItemTemplate>
<asp:Label ID="lblHiddenHotelID" runat="server" Text='<%# Eval("pkHotelID") %>' style="display:none"></asp:Label>
<asp:Label ID="lblHiddenObsolete" runat="server" Text='<%# Eval("Obsolete") %>' style="display:none"></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Hotel" SortExpression="HotelName">
<ItemTemplate>
<asp:Label ID="lblHotelName" runat="server" Text='<%# Eval("HotelName") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Obsolete">
<ItemTemplate>
<asp:CheckBox ID="chkObsolete" runat="server"></asp:CheckBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Rating">
<ItemTemplate>
<telerik:RadRating ID="RadRatingHotel" runat="server" ItemCount="5" Precision="Item"
Value='<%# Convert.ToDouble(Eval("Rating")) %>'>
</telerik:RadRating>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
</div>
</form>
</
body>
</
html>
Default.aspx.cs
using
System;
using
System.Collections.Generic;
using System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data;
using
System.Data.SqlClient;
using
Telerik.Web.UI;
public
partial class _Default : System.Web.UI.Page
{
#region
Properties
string connString = System.Configuration.ConfigurationManager.ConnectionStrings["EventMgmtCS"].ToString();
#endregion
#region
DataTables
DataTable HotelSearchResults
{
get
{
SqlParameterCollection sqlParams = new SqlCommand().Parameters;
sqlParams.Add(
Napp_SQLServer.BuildSQLCommandParamater("@search_type", "Hotel Name", System.Data.SqlDbType.VarChar, System.Data.ParameterDirection.Input));
sqlParams.Add(
Napp_SQLServer.BuildSQLCommandParamater("@hotel_name", RadTextBox1.Text, System.Data.SqlDbType.VarChar, System.Data.ParameterDirection.Input));
DataTable dt = Napp_SQLServer.BuildDataTableWithParameters(connString, "proc_hotel_search", sqlParams);
return dt;
}
}
#endregion
#region
Events
protected void Button1_Click(object sender, EventArgs e)
{
RadGrid1.Visible =
true;
RadGrid1.Rebind();
}
protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource = HotelSearchResults;
}
protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item.ItemType == Telerik.Web.UI.GridItemType.Item | e.Item.ItemType == Telerik.Web.UI.GridItemType.AlternatingItem | e.Item.ItemType == Telerik.Web.UI.GridItemType.EditItem | e.Item.ItemType == Telerik.Web.UI.GridItemType.SelectedItem)
{
//declare all the items in the grid
Label lblHiddenObsolete = (Label)e.Item.FindControl("lblHiddenObsolete");
CheckBox chkObsolete = (CheckBox)e.Item.FindControl("chkObsolete");
if (lblHiddenObsolete.Text == "True")
{
chkObsolete.Checked =
true;
}
else
{
chkObsolete.Checked =
false;
}
}
}
#endregion
}