• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 304
  • Last Modified:

Get Value in DataGrid

I am trying to change the Cell Color of my Data Grid depending on the value of a Cell and for some reason the value of my cell seems to be returning a null value.

The function DataGrid1_ItemCreated is called and this line should return the value of the cell, but is returning "".
string test = e.Item.Cells[0].Text;

The Data Grid does load with no issues after proceeding through this function.

Any help would be greatly appreciated, I have included the full code for your review.


public class BranchLicensing : System.Web.UI.Page
	{
 
		string PageID = "BranchLicensing.aspx.cs";
		protected System.Web.UI.WebControls.DataGrid DataGrid1;
 
		GatewaySales.Modules.Common.Library objLibrary = new GatewaySales.Modules.Common.Library();
		GatewaySales.Modules.Common.BaseSecurity  objBaseSecurity = new GatewaySales.Modules.Common.BaseSecurity();
 
 
		private void Page_Load(object sender, System.EventArgs e)
		{
			// Put user code to initialize the page here
			PageInit();
 
			if(!IsPostBack)
			{
				LoadBranchLicenses();
			}
		}
 
		public System.Data.DataTable LoadBranchLicenses() 
		{
			// connect to database
			SqlConnection conn = new System.Data.SqlClient.SqlConnection(ConfigurationSettings.AppSettings["Integra_ConnectionString"]);
			conn.Open();
			string selectstmt = "";
			selectstmt = "select State, CONVERT (varchar,ExpirationDate, 101) as ExpirationDate, Lender1stMtg, Lender2ndMtg, Broker1stMtg, Broker2ndMtg from custom_licensingbranch where branchid = 51 order by state";
			
			SqlCommand myCommand = new SqlCommand(selectstmt,conn);
			SqlDataAdapter adapter = new SqlDataAdapter(myCommand);
			System.Data.DataTable BranchLicenses = new System.Data.DataTable(); 
			adapter.Fill(BranchLicenses);
 
			DataGrid1.DataSource = BranchLicenses;
			DataGrid1.DataBind();
				
			conn.Close();
			
			return BranchLicenses;
		}
 
		protected void DataGrid1_ItemCreated( System.Object sender, System.Web.UI.WebControls.DataGridItemEventArgs e )  
		{
			
			if ( e.Item.ItemType == ListItemType.Item ||
				e.Item.ItemType == ListItemType.AlternatingItem ||
				e.Item.ItemType == ListItemType.SelectedItem )  
			{
 
				string test = e.Item.Cells[0].Text;
 
				if(test == "PA")
				{
					e.Item.Cells[0].ForeColor = System.Drawing.Color.Green;
				
				}
			}
 
		}
 
 
 
 
 
 
 
<form id="Form1" method="post" runat="server" class="appbg">
			<table width="300" cellpadding="0" cellspacing="0" bgcolor="#ffffff" class="appbg">
				<TBODY>
					<tr>
						<td colspan="3" width="100%">
							<!--#include file="../../includes/topNav.aspx"-->
						</td>
					</tr>
					<tr>
						<td width="1%" valign="top">
							<!--#include file="../../includes/leftNav.aspx"-->
						</td>
						<td width="1%" valign="top">
							&nbsp;&nbsp;
						</td>
						<td width="1%">
							<!-- ******* Contents will go here *********** !-->
							<div style="BORDER-RIGHT:black 0px solid; BORDER-TOP:black 0px solid; BORDER-LEFT:black 0px solid; WIDTH:633px; BORDER-BOTTOM:black 0px solid; HEIGHT:445px">
								<table border="0" width="100%">
									<TBODY>
										<tr>
											<td class="contentbg"><b><IMG src="<%=getImagePath()%>/Images/PageHead.bmp">&nbsp;State Desk Licensing Information</b><HR>
											</td>
										</tr>
										
										<tr>
											<td>
												<asp:datagrid id="DataGrid1" AllowPaging="False" runat="server" ShowFooter="True"
													AllowSorting="True" GridLines="Horizontal" CellPadding="2" BorderWidth="1px" Width="100%"
														AutoGenerateColumns="False" OnItemDataBound="DataGrid1_ItemCreated">
												<SelectedItemStyle></SelectedItemStyle>
												<AlternatingItemStyle BackColor="Silver"></AlternatingItemStyle>
												<HeaderStyle CssClass="sectionheader"></HeaderStyle>
												<Columns>
													<asp:TemplateColumn HeaderText="State" HeaderStyle-Font-Bold="True">
													<ItemTemplate>
														<asp:Label Runat="server" ID="dglstate"><%# DataBinder.Eval(Container, "DataItem.State") %>
													</asp:Label>
													</ItemTemplate>
													</asp:TemplateColumn>
													<asp:TemplateColumn HeaderText="Expiration Date" HeaderStyle-Font-Bold="True">
														<ItemTemplate>
															<asp:Label Runat="server" ID="dglexpdate"><%# DataBinder.Eval(Container, "DataItem.ExpirationDate") %>
															</asp:Label>
														</ItemTemplate>
													</asp:TemplateColumn>
													<asp:TemplateColumn HeaderText="1st Lien Mtg License?" HeaderStyle-Font-Bold="True">
														<ItemTemplate>
															<asp:Label Runat="server" ID="Label3"><%# DataBinder.Eval(Container, "DataItem.Lender1stMtg") %>
															</asp:Label>
														</ItemTemplate>
													</asp:TemplateColumn>
													<asp:TemplateColumn HeaderText="2nd Lien Mtg License?" HeaderStyle-Font-Bold="True">
														<ItemTemplate>
															<asp:Label TabIndex="0" Runat="server" ID="Label4"><%# DataBinder.Eval(Container, "DataItem.Lender2ndMtg") %>
															</asp:Label>
														</ItemTemplate>
													</asp:TemplateColumn>
													<asp:TemplateColumn HeaderText="1st Lien Broker License?" HeaderStyle-Font-Bold="True">
														<ItemTemplate>
															<asp:Label TabIndex="0" Runat="server" ID="Label5"><%# DataBinder.Eval(Container, "DataItem.Broker1stMtg") %>
															</asp:Label>
														</ItemTemplate>
													</asp:TemplateColumn>
													<asp:TemplateColumn HeaderText="2nd Lien Broker License?" HeaderStyle-Font-Bold="True">
														<ItemTemplate>
															<asp:Label TabIndex="0" Runat="server" ID="Label6"><%# DataBinder.Eval(Container, "DataItem.Broker2ndMtg") %>
															</asp:Label>
														</ItemTemplate>
													</asp:TemplateColumn>
												</Columns>									
											</asp:DataGrid>
											</td>
										</tr>
										<tr>
											<td>
												
												<P></form>

Open in new window

0
dtadin
Asked:
dtadin
  • 3
  • 2
1 Solution
 
crazymanCommented:
Do it in ItemDataBound not ItemCreated.
0
 
dtadinAuthor Commented:
I am using OnItemDataBound="DataGrid1_ItemCreated"



thank you
<asp:datagrid id="DataGrid1" AllowPaging="False" runat="server" ShowFooter="True"
													AllowSorting="True" GridLines="Horizontal" CellPadding="2" BorderWidth="1px" Width="100%"
														AutoGenerateColumns="False" OnItemDataBound="DataGrid1_ItemCreated">

Open in new window

0
 
Gyanendra SinghArchitectCommented:
you are using template .. that is why value is not bind to cell

you need to use FindControl() and then cast the object....for example..

((Label)e.Item.FindControl("lblName")).Text
0
Veeam and MySQL: How to Perform Backup & Recovery

MySQL and the MariaDB variant are among the most used databases in Linux environments, and many critical applications support their data on them. Watch this recorded webinar to find out how Veeam Backup & Replication allows you to get consistent backups of MySQL databases.

 
dtadinAuthor Commented:
I tried updating my function to

  string test = ((Label)e.Item.FindControl("dglstate")).Text;

Still no luck, test is still returning a value of "".

0
 
Gyanendra SinghArchitectCommented:
can you check if your control support e.row
string test = ((Label)e.Row.FindControl("dglstate")).Text;
0
 
dtadinAuthor Commented:
Nope, I get "System.Web.UI.WebControls.DataGridItemEventArgs' does not contain a definition for 'Row'"



0

Featured Post

Veeam Disaster Recovery in Microsoft Azure

Veeam PN for Microsoft Azure is a FREE solution designed to simplify and automate the setup of a DR site in Microsoft Azure using lightweight software-defined networking. It reduces the complexity of VPN deployments and is designed for businesses of ALL sizes.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now