I am using the example code at:
http://www.telerik.com/help/aspnet-ajax/grdconditionalimagedisplayingridcolumn.html
to try to disable/non-visible a GridButtonColumn based on the value of another column value. However it is not working as advertised. I'm creating my grid in the code-behind thus:
public void AddParentFields(RadGrid RadGrid1)
{
string SqlCmd = "exec dbo.wa_AddFields 'PTTICKETS'";
DataAccess sda = new DataAccess();
GridBoundColumn boundColumn;
sda.RunSelectCmd(SqlCmd);
foreach (DataRow dr in sda.dtResult.Rows)
{
if (dr["fieldtype"].ToString().Trim() == "HYPERLINK")
{
GridHyperLinkColumn hyperLinkColumn = new GridHyperLinkColumn();
hyperLinkColumn.DataTextField = dr["datafield"].ToString().Trim();
hyperLinkColumn.HeaderText = dr["header"].ToString().Trim();
hyperLinkColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Left;
hyperLinkColumn.Display = Convert.ToBoolean(dr["visible"]);
//hyperLinkColumn.DataNavigateUrlField = "sh_track_url";
string[] fieldArray;
fieldArray = new string[2];
fieldArray[0] = "sh_track_url";
fieldArray[1] = "pcktrackno";
hyperLinkColumn.DataNavigateUrlFields = fieldArray;
hyperLinkColumn.DataNavigateUrlFormatString = "{0}{1}";
hyperLinkColumn.Target = "_blank";
RadGrid1.MasterTableView.Columns.Add(hyperLinkColumn);
}
else
{
boundColumn = new GridBoundColumn();
boundColumn.DataField = dr["datafield"].ToString().Trim();
boundColumn.HeaderText = dr["header"].ToString().Trim();
boundColumn.DataFormatString = dr["fieldformat"].ToString().Trim();
boundColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Left;
boundColumn.Display = Convert.ToBoolean(dr["visible"]);
boundColumn.HeaderButtonType = GridHeaderButtonType.TextButton;
RadGrid1.MasterTableView.Columns.Add(boundColumn);
}
}
GridButtonColumn buttonColumn = new GridButtonColumn();
buttonColumn.ButtonType = GridButtonColumnType.PushButton;
buttonColumn.Text = "Confirm Receipt";
buttonColumn.CommandName = "ConfirmReceipt";
buttonColumn.UniqueName = "ConfirmReceipt";
RadGrid1.MasterTableView.Columns.Add(buttonColumn);
boundColumn = new GridBoundColumn();
boundColumn.DataField = "patient_verified";
boundColumn.Display = false;
RadGrid1.MasterTableView.Columns.Add(boundColumn);
}
---------------------
Then I try to set the visibility of the 'ConfirmReceipt' button based on the value of the 'patient_verified' column with:
------------------------
private void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem dataItem = e.Item as GridDataItem;
GridBoundColumn boundColumn = dataItem["patient_verified"].Controls[0] as GridBoundColumn;
if (boundColumn.Value == 1)
{
dataItem["ConfirmReceipt"].Controls[0].Visible = false;
}
}
}
------------------------
But, the errors are:
on e.item
Cannot convert type 'Telerik.Web.UI.GidItem' to 'Telerik.WebContrtols.GridDataItem' via a reference conversion....
and on dataItem["patient_verified"].
Cannot convert type 'Systenm.Web.UI.Control' to 'Telerik.WebControls.GridBoundColumn' via a reference conversion....
Can you help me? Thanks.
Dan