<ClientSettings EnablePostBackOnRowClick="true">
<Selecting AllowRowSelect="True" />
</ClientSettings>
<
telerik:RadContextMenu ID="rcmContextMenu" iscontext="True" runat="server" Skin="Outlook"
OnItemClick="rcmContextMenu_ItemClick" contextmenuelementid="none">
<Items>
<telerik:RadMenuItem Text="Edit" />
<telerik:RadMenuItem Text="Delete" />
</
Items>
</
telerik:RadContextMenu>
I want to have GridBinaryImageColumn that presents image from database. Can this image be inside hyperlink like
<a href="http://.../Product.aspx?Id=1"><img /></a> ?
Or any other approach that make image clickable and links to that row details?
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="JobTitleEditor.ascx.cs" Inherits="LiaisonApp.Controls.JobTitleEditor" %>
<div id="JobTitleEditor">
<asp:Button ID="btn_Save" runat="server" Text="Save" onclick="btn_Save_Click" />
<telerik:RadGrid ID="grid_Data" runat="server" AutoGenerateColumns="False" GridLines="None" OnNeedDataSource="grid_Data_NeedDataSource">
<ClientSettings EnableRowHoverStyle="True">
<Scrolling AllowScroll="True" ScrollHeight="550px" UseStaticHeaders="True" />
<Resizing AllowColumnResize="True" />
</ClientSettings>
<MasterTableView DataKeyNames="JobTitleID">
<RowIndicatorColumn Visible="false" />
</MasterTableView>
<HeaderContextMenu EnableAutoScroll="True">
</HeaderContextMenu>
</telerik:RadGrid>
</div>protected void btn_Save_Click(object sender, EventArgs args)
{
foreach (GridDataItem item in grid_Data.MasterTableView.Items)
{
var row = GridDataTable.Rows.Find(item.KeyValues.ToInt());
foreach (var jobFunction in JobFunctions)
{
var columnName = GetJobFunctionColumnName(jobFunction.ListEnumID);
var checkbox = (CheckBox)item.FindControl( "chk_" + jobFunction.ListEnumID.ToString());
row[columnName] = checkbox.Checked;
}
}
}
private class CheckboxColumnTemplate : ITemplate
{
int _jobFunctionID = 0;
public void InstantiateIn(Control container)
{
var checkbox = new CheckBox();
checkbox.ID = "chk_" + _jobFunctionID.ToString();
checkbox.DataBinding += new EventHandler(Checkbox_DataBinding);
container.Controls.Add(checkbox);
}
void Checkbox_DataBinding(object sender, EventArgs args)
{
var checkbox = sender as CheckBox;
var dataRow = (checkbox.NamingContainer as GridDataItem).DataItem as DataRowView;
checkbox.Checked = dataRow.Row[GetJobFunctionColumnName(_jobFunctionID)].ToBool();
}
public CheckboxColumnTemplate(int jobFunctionID)
{
this._jobFunctionID = jobFunctionID;
}
}
private void BuildGrid()
{
var gridColumn = new GridBoundColumn();
gridColumn.DataField = "JobTitleID";
gridColumn.Visible = false;
gridColumn.UniqueName = "JobTitleID";
grid_Data.Columns.Add(gridColumn);
gridColumn = new GridBoundColumn();
gridColumn.DataField = "JobTitle";
gridColumn.HeaderText = "Job Title";
gridColumn.HeaderStyle.Width = new Unit(180, UnitType.Pixel);
gridColumn.FooterStyle.Width = new Unit(180, UnitType.Pixel);
gridColumn.ItemStyle.Width = new Unit(180, UnitType.Pixel);
grid_Data.Columns.Add(gridColumn);
foreach (var jobFunction in JobFunctions)
{
var newColumn = new GridTemplateColumn();
newColumn.HeaderText = jobFunction.StringValue;
newColumn.ItemTemplate = new CheckboxColumnTemplate(jobFunction.ListEnumID);
newColumn.HeaderStyle.Width = new Unit(80, UnitType.Pixel);
newColumn.FooterStyle.Width = new Unit(80, UnitType.Pixel);
newColumn.ItemStyle.Width = new Unit(80, UnitType.Pixel);
newColumn.UniqueName = GetJobFunctionColumnName(jobFunction.ListEnumID);
newColumn.DataField = newColumn.UniqueName;
grid_Data.Columns.Add(newColumn);
}
}