I Have the below Asp.net Code:
the problem is that When Timer Tick Every 30 Second and GridView Filled the javascript code is not executed !! and Sound is not played.
I have also tried SoundPlayer Class but is not working on the Server Side can anyone provide me with a solution ?
<%# Page Language="C#" AutoEventWireup="true" CodeFile="OrdersPage.aspx.cs" Inherits="Orders_" Async="true" %>
<%# Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!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>Gazar | Orders Page</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link rel="Stylesheet" href="StyleSheet.css" />
<script type="text/javascript">
function ShowProgress() {
document.getElementById('UpdateProgress1').style.display = "inline";
}
</script>
</head>
<body>
<form id="form1" class="center_it" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" EnablePageMethods="true" runat="server"></asp:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<table class="MainTable">
<tr>
<td style="text-align: left;" colspan="2">
<img id="Img2" src="~/images/gazzarlogo.png" alt="GazarBanner" runat="server" class="BannerImage" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Size="30pt" ForeColor="White"
Text="الطلبـــــات"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="History" CssClass="Buttons" />
</td>
<td>
<asp:Button ID="Exit" Text="خروج" runat="server" OnClick="Exit_Click" CssClass="Buttons" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:GridView ID="GridViewOrders" runat="server" Style="margin-left: auto; margin-right: auto;"
OnRowDataBound="GridViewOrders_RowDataBound" PageSize="30" BackColor="White"
BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="0px" CaptionAlign="Top"
CellPadding="4" ForeColor="Black" HorizontalAlign="Center" EnableModelValidation="True"
GridLines="Vertical" Width="1100px" Font-Names="Tahoma" Font-Size="10pt" Font-Bold="False"
OnRowCommand="GridViewOrders_RowCommand" AutoGenerateColumns="False">
<RowStyle BackColor="#F7F7DE" Wrap="True" />
<AlternatingRowStyle BackColor="White" />
<FooterStyle BackColor="#CCCC99" />
<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:TemplateField HeaderText="Open" ItemStyle-Width="60px">
<ItemTemplate>
<asp:Button ID="ApproveBtn" Text="Open" Width="60" Height="30" runat="server" OnClientClick="ShowProgress()" />
</ItemTemplate>
<ItemStyle Width="70px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="ID" ItemStyle-Width="70px">
<ItemTemplate>
<asp:Label ID="OrderID" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "ID") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="70px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Name" ItemStyle-Width="150px">
<ItemTemplate>
<asp:Label ID="Name" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Name") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="150px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Address" ItemStyle-Width="300px">
<ItemTemplate>
<asp:Label ID="Address" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Address") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="300px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Number" ItemStyle-Width="100px">
<ItemTemplate>
<asp:Label ID="Number" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Number") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Sent Date" ItemStyle-Width="100px">
<ItemTemplate>
<asp:Label ID="SentDate" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Sent Date") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Recieved Date" ItemStyle-Width="100px">
<ItemTemplate>
<asp:Label ID="RecievedDate" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Recieved Date") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="# Success" ItemStyle-Width="50px">
<ItemTemplate>
<asp:Label ID="SuccessNo" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "# Success") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="50px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="# Fake" ItemStyle-Width="50px">
<ItemTemplate>
<asp:Label ID="FakeNo" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "# Fake") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="50px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Restaurant" ItemStyle-Width="50px">
<ItemTemplate>
<asp:Label ID="Restaurant" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Restaurant") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="50px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Branch" ItemStyle-Width="50px">
<ItemTemplate>
<asp:Label ID="Branch" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Branch") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="50px" />
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<div class="container">
<div class="LoadingDiv">
<span class="LoadingLabel">Check Orders ...</span>
<img class="LoadingImg" src="Images/ajax-loader.gif" alt="Loading ..." />
</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:Timer ID="Timer1" runat="server" Interval="30000" OnTick="Timer1_Tick" />
</form>
</body>
</html>
and code behind is:
protected void Timer1_Tick(object sender, EventArgs e)
{
orderDB.LogState("Time Tick");
if (Session["UserID"] != null)
{
orderDB.LogState("Session Alive");
FillDataGrid(int.Parse(Session["UserID"].ToString()));
orderDB.LogState("End fill Grid View");
}
else
{
Response.Redirect("~/login.aspx");
}
}
private void FillDataGrid(int UserID)
{
Orders = orderDB.GetOrdersByUser(UserID);
orderDB.LogState("Select: " + DateTime.Now.ToString() + "\t" + Request.UserHostAddress + "\t" + Session.SessionID + "\t" + Session["UserID"].ToString());
if (Orders == null)
Response.Redirect("~/login.aspx");
DataTable Table = new DataTable();
Table.Columns.Add("ID", System.Type.GetType("System.String"));
Table.Columns.Add("Name", System.Type.GetType("System.String"));
Table.Columns.Add("Address", System.Type.GetType("System.String"));
Table.Columns.Add("Number", System.Type.GetType("System.String"));
Table.Columns.Add("Sent Date", System.Type.GetType("System.String"));
Table.Columns.Add("Recieved Date", System.Type.GetType("System.String"));
Table.Columns.Add("# Success", System.Type.GetType("System.String"));
Table.Columns.Add("# Fake", System.Type.GetType("System.String"));
Table.Columns.Add("Restaurant", System.Type.GetType("System.String"));
Table.Columns.Add("Branch", System.Type.GetType("System.String"));
for (int i = 0; i < Orders.Count; i++)
{
object[] myRow = new object[10];
myRow[0] = Orders[i].GetId();
myRow[1] = Orders[i].GetOwner();
myRow[2] = Orders[i].GetAddress().getAllAddress();
myRow[3] = Orders[i].GetPhoneNumber();
myRow[4] = Orders[i].GetOriginalTime().ToString();
myRow[5] = Orders[i].GetTime().ToString();
myRow[6] = Orders[i].NoOfSuccess; //success Orders;
myRow[7] = Orders[i].NoOfFake; //fake Orders
myRow[8] = Orders[i].GetResName();
myRow[9] = Orders[i].GetBranchName();
Table.Rows.Add(myRow);
}
orderDB.LogState("Table Rows Count: " + Table.Rows.Count);
GridViewOrders.DataSource = Table;
GridViewOrders.DataBind();
string sSelectedAudio = Server.MapPath("home.wav");
if (GridViewOrders.Rows.Count != 0)
{
playSound(sSelectedAudio);
orderDB.LogState("Sound Played: " + GridViewOrders.Rows.Count);
}
else
{
orderDB.LogState("Empty Grid View: " + GridViewOrders.Rows.Count);
}
}
private void playSound(string path)
{
string PlaySound = "<embed src=\"" + path + "\" autostart=\"true\" hidden=\"true\"></embed>";
Response.Write(PlaySound);
}
It could be the Response.Write that's causing the issue. Try using a placeholder control then adding a HtmlGenericControl to it with the markup for the embed tag i.e.
HtmlGenericControl sound = new HtmlGenericControl("<embed src=\"" + path + "\"
autostart=\"true\" hidden=\"true\"></embed>");
ucPlaceHolder.Controls.Add(sound);
Make sure the placeholder control is withing the ContentTemplate of the UpdatePanel that you are using
Related
Am face some troubles to pass data from inner grid to main grid as shown in this pic
im tried too many solution i can found using C# and Jquery
this is simple photo to result
Now this is invoice read from database to show multiple data as shown the grid contain a another grid by normal code it was impossible to access to gridview2 to get data
all i want is get "amount" from gridview2 then calculate "sum" then pass it to "total" in gridview1
also im trid with Jquery it do nothing this is simple code of both fields i want to do sum with Jquery
<script type="text/javascript">
$(function () {
var fields = document.getElementsByClassName('clstocal');
var sum = 0;
for (var i = 0; i < fields.length; ++i) {
var item = fields[i];
sum += parseInt(item.innerHTML);
}
$("#totalprice").text(sum);
}); // this code get it from this site
</script>
<asp:TextBox ID="amount" CssClass ="clstocal" autopostback="true" runat="server" Enabled="False" Height="24px" Text='<%# Bind("body_total") %>' Width="98px" OnTextChanged="amount_TextChanged"></asp:TextBox>
and
<asp:TextBox ID="totalprice" runat="server" Enabled="False" Height="22px" Width="145px" OnTextChanged="totalprice_TextChanged" autopostback="true"></asp:TextBox>
there are a easy solution but not a good solution is sum the result to database then read it again but this is not efficient at all ..
To be honest the answer was simple
1. its impossible to access grid inside grid
2. solved by normal code in C# as shown
protected void GridHead(object sender, GridViewRowEventArgs e)
{
// MAin Grid which is grid number 1
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox textboxPrice1 = e.Row.FindControl("totalprice") as TextBox;
textboxPrice1.Text = i.ToString();
i = 0; // Global double -> protected double i = 0; // THIS LINE TO STOP COUNTING TO OTHER NEXT INVOICE
}
}
protected void GridBody(object sender, GridViewRowEventArgs e)
{
// Inner grid which contain multipe item need to sun then send it to Main grid
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox lblPrice2 = e.Row.FindControl("amount") as TextBox;
i += Convert.ToDouble(lblPrice2.Text);
}
}
and the code behind to handle the grid
<%# Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Reports._Default" %>
Welcome to Invoice Revision
<!-- change both grid from OnSelectedIndexChanged to onrowdatabound to use GridViewRowEventArgs instade EventArgs-->
<asp:GridView ID="GD_Head" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Height="206px" Width="548px" AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="None" onrowdatabound="GridHead">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<br />
<asp:Label ID="Label25" runat="server" Height="22px" Text="Invoice : " Width="60px"></asp:Label>
<asp:Label ID="Label1" width="145px" runat="server" Text='<%# Eval("invoice") %>' BorderStyle="Solid" BorderWidth="1px" Height="22px" Font-Size="Smaller"></asp:Label>
<asp:Label ID="Label26" runat="server" Height="22px" Text="Kind : " Width="60px"></asp:Label>
<asp:Label ID="Label35" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("kind") %>' Width="71px"></asp:Label>
<asp:Label ID="Label27" runat="server" Height="22px" Text="Date : " Width="60px"></asp:Label>
<asp:Label ID="Label3" width="170px" runat="server" Text='<%# Eval("date") %>' BorderWidth="1px" Height="22px"></asp:Label>
<br />
<br />
<asp:Label ID="Label28" runat="server" Height="22px" Text="File : " Width="60px"></asp:Label>
<asp:Label ID="Label4" width="144px" runat="server" Text='<%# Eval("file") %>' BorderWidth="1px" Height="22px"></asp:Label>
<asp:Label ID="Label29" runat="server" Height="22px" Text="Awb" Width="60px"></asp:Label>
<asp:Label ID="Label5" width="313px" runat="server" Text='<%# Eval("awb") %>' BorderWidth="1px" Height="22px"></asp:Label>
<br />
<br />
<asp:Label ID="Label30" runat="server" Height="22px" Text="GL : " Width="60px"></asp:Label>
<asp:Label ID="Label6" width="144px" runat="server" Text='<%# Eval("gl") %>' BorderWidth="1px" Height="22px"></asp:Label>
<asp:Label ID="Label7" width="376px" runat="server" Text='<%# Eval("name") %>' BorderWidth="1px" Height="23px"></asp:Label>
<br />
<br />
<asp:Label ID="Label31" runat="server" Height="22px" Text="Total : " Width="60px"></asp:Label>
<!-- Convert String to int then sum them from body to head -->
<asp:TextBox ID="totalprice" OnTextChanged ="totalprice_TextChanged" runat="server" Enabled="False" Height="22px" Width="145px"></asp:TextBox>
<asp:Label ID="lb12" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("curId") %>' Width="38px"></asp:Label>
<asp:Label ID="Label32" runat="server" Height="22px" Text="Rate : " Width="40px"></asp:Label>
<asp:Label ID="Label9" width="100px" runat="server" Text='<%# Eval("rate") %>' BorderStyle="Solid" BorderWidth="1px" Height="22px"></asp:Label>
<asp:Label ID="Label33" runat="server" Height="22px" Text="Emp" Width="40px"></asp:Label>
<asp:Label ID="lb10" width="65px" runat="server" Text='<%# Eval("emp") %>' BorderStyle="Solid" BorderWidth="1px" Height="22px"></asp:Label>
<asp:Label ID="Label34" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("poste") %>' Width="62px"></asp:Label>
<br />
<br />
<asp:Label ID="Label14" runat="server" Height="22px" Text="No" Width="52px"></asp:Label>
<asp:Label ID="Label23" width="76px" runat="server" Text='GL' Height="22px"></asp:Label>
<asp:Label ID="Label18" runat="server" Height="22px" Text="Description" Width="250px"></asp:Label>
<asp:Label ID="Label19" runat="server" Height="22px" Text="Amount" Width="130px"></asp:Label>
<!-- change both grid from OnSelectedIndexChanged to onrowdatabound to use GridViewRowEventArgs instade EventArgs-->
<asp:GridView ID="GD_Body" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="serial" DataSourceID="SqlDataSource2" Height="39px" onrowdatabound="GridBody" Width="629px" GridLines="None">
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Label ID="lb40" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("line_no") %>' Width="52px"></asp:Label>
<asp:Label ID="Label41" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("body_gl") %>' Width="76px"></asp:Label>
<asp:Label ID="Label42" runat="server" BorderWidth="1px" Height="22px" Text='<%# Eval("body_name") %>' Width="250px"></asp:Label>
<asp:TextBox ID="amount" CssClass ="clstocal" runat="server" Enabled="False" Height="24px" Text='<%# Bind("body_total") %>' Width="98px"></asp:TextBox>
<asp:Label ID="UN" runat="server" BorderWidth="1px" Height="22px" Text="UN" Width="52px"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<asp:Label ID="Label22" runat="server" Text="---------------------------------------------------------------------------------------------------------------------" Width="600px"></asp:Label>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:Body %>" SelectCommand="SELECT * FROM [body] WHERE ([invoice] = #invoice)">
<SelectParameters>
<asp:ControlParameter ControlID="Label1" Name="invoice" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<br />
</ItemTemplate>
<ControlStyle Font-Bold="True" />
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<SortedAscendingCellStyle BackColor="#FDF5AC" />
<SortedAscendingHeaderStyle BackColor="#4D0000" />
<SortedDescendingCellStyle BackColor="#FCF6C0" />
<SortedDescendingHeaderStyle BackColor="#820000" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Head %>" SelectCommand="SELECT * FROM [head]"></asp:SqlDataSource>
and this is result
I hope this answer find you
if you have better answer please share with us
I want to edit the record in gridview on single click. My gridview is placed inside update panel.
There is a search textbox given and when I type anything in search textbox "txt_Search_TextChanged" event is fired and that text is searched in database and that particular record is fetched and bind to the grid.
Now my problem is: If I click on edit button of grid without searching, then event is fired. But if I search any record and then I click on edit button, it takes 2 click to give result. I have written a script for textbox which is as follows:
enter code here
<script>
function RefreshUpdatePanel() {
__doPostBack('<%= txt_Search.ClientID %>', '');
};
below is aspx code
<table width="100%">
<tr>
<td align="center">
<div style="border-width: 2px; border-style: solid; border-color: #FDAC4C; width: 95%; border-radius: 10px;">
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:GridView ID="grd_Master" ShowFooter="false" runat="server" Width="98%" AllowPaging="true" PagerStyle-CssClass="paging"
OnPageIndexChanging="grd_Master_PageIndexChanging"
PageSize="8" AutoGenerateColumns="False" BorderWidth="0" BorderStyle="Solid" BorderColor="#FDAC4C" OnRowEditing="grd_Master_RowEditing" ShowHeaderWhenEmpty="true">
<AlternatingRowStyle BackColor="#FFFFFF" Height="30px" BorderStyle="Dotted" BorderWidth="1"
BorderColor="#DDDDDD" />
<RowStyle BackColor="#FFF0DD" Height="30px" BorderStyle="Dotted" BorderWidth="1"
BorderColor="#DDDDDD" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
Serial No.<br />
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Left"></HeaderStyle>
<ItemStyle HorizontalAlign="Right" Width="10%" CssClass="grdrow"></ItemStyle>
<ItemTemplate>
<asp:Label ID="lblSRNO" runat="server" Style="padding-right: 50px" Text='<%#Container.DataItemIndex+1 %>'></asp:Label>
<asp:Label ID="Cooling_Code" runat="server" Visible="false" Text='<% #Bind("Cool_Code")%>'></asp:Label>
<asp:Label ID="lblProdGrpCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Prod_Grp_Code")%>' Visible="false"></asp:Label>
<asp:Label ID="lblSubProdGrpCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Sub_Prod_Code")%>' Visible="false"></asp:Label>
<asp:Label ID="lblMakeCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Make_Code")%>' Visible="false"></asp:Label>
<asp:Label ID="lblRegerCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Refg_Code")%>' Visible="false"></asp:Label>
<asp:Label ID="lblCompressorCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Comp_Code")%>' Visible="false"></asp:Label>
<asp:Label ID="lblFilePath" runat="server" Visible="false" Style="padding-left: 100px" Text='<% #Bind("Document_Path")%>'></asp:Label>
</ItemTemplate>
<HeaderStyle CssClass="grdheader" Width="10%" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Cooling Name
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Left"></HeaderStyle>
<ItemStyle HorizontalAlign="Left" Width="20%" CssClass="grdrow"></ItemStyle>
<ItemTemplate>
<asp:Label ID="lblCoolingName" runat="server" Style="padding-left: 10px" Text='<% #Bind("Cool_Name")%>'></asp:Label>
</ItemTemplate>
<HeaderStyle CssClass="grdheader" Width="20%" />
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Short Name
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Left" CssClass="grdheader" Width="15%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left" Width="15%" CssClass="grdrow"></ItemStyle>
<ItemTemplate>
<asp:Label ID="lblCoolingShortName" runat="server" Style="padding-left: 10px" Text='<% #Bind("Cool_Short_Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Cooling Description
</HeaderTemplate>
<ItemStyle HorizontalAlign="left" Width="45%" CssClass="grdrow"></ItemStyle>
<ItemTemplate>
<asp:Label ID="lblCoolingDescr" runat="server" Style="padding-left: 10px" Text='<% #Bind("Cool_Descr")%>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left" CssClass="grdheader" Width="45%"></HeaderStyle>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
Action<br />
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Left" CssClass="grdheader" Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" Width="10%" CssClass="grdrow"></ItemStyle>
<ItemTemplate>
<asp:ImageButton ID="imgbtnEdit" runat="server" ImageUrl="~/images/Edit.png" Width="20px" ToolTip="Edit" CommandName="Edit" Height="20px" />
<asp:ImageButton ID="ImageDelete" runat="server" ImageUrl="~/images/trash1.png" ToolTip="Delete" OnClick="ImageDelete_Click" Width="25px" Height="20px" OnClientClick="return confirmDelete()" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle HorizontalAlign="Left" BorderWidth="0" BorderStyle="None" />
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txt_Search" />
<asp:PostBackTrigger ControlID="grd_Master" />
</Triggers>
</asp:UpdatePanel>
</div>
</td>
</tr>
</table>
Below is cs code for rowediting
protected void grd_Master_RowEditing(object sender, GridViewEditEventArgs e)
{
try
{
tab0.Enabled = false;
tab1.Enabled = true;
grd_Master.EditIndex = e.NewEditIndex;
GridViewRow rw = (GridViewRow)grd_Master.Rows[e.NewEditIndex];
Label CoolingCode = (Label)rw.FindControl("Cooling_Code");
Label ProdgrpCode = (Label)rw.FindControl("lblProdGrpCode");
Label SubProdCode = (Label)rw.FindControl("lblSubProdGrpCode");
Label MakeCode = (Label)rw.FindControl("lblMakeCode");
Label ReferCode = (Label)rw.FindControl("lblRegerCode");
Label CompressoreCode = (Label)rw.FindControl("lblCompressorCode");
Label CoolingName = (Label)rw.FindControl("lblCoolingName");
Label CoolingName_Short = (Label)rw.FindControl("lblCoolingShortName");
Label CoolingName_Desc = (Label)rw.FindControl("lblCoolingDescr");
Label lblFilePath = (Label)rw.FindControl("lblFilePath");
txtCoolType.Text = CoolingName.Text.Trim();
txtCoolTypeShortname.Text = CoolingName_Short.Text.Trim();
txtCoolTypeDescrip.Text = CoolingName_Desc.Text.Trim();
ddlProdGrp.SelectedValue = ProdgrpCode.Text;
ddlSubProd.SelectedValue = SubProdCode.Text;
ddlMake.SelectedValue = MakeCode.Text;
ddlCompressor.SelectedValue = CompressoreCode.Text;
ddlRefe.SelectedValue = ReferCode.Text;
btnsave.Text = "Update";
ViewState["CoolingCode"] = CoolingCode.Text;
TabContainer_Item.ActiveTabIndex = 1;
Session["CoolingCode"] = CoolingCode.Text;
this.fu1.BindGridDoc();
}
catch (Exception ex)
{
Master.ErrorMessage(ex.Message);
}
}
protected void txt_Search_TextChanged(object sender, EventArgs e)
{
try
{
DataSet ds = gn.ExecuteDataset("Search_CoolingType", txt_Search.Text.Trim());
ViewState["CoolingTypeData"] = ds.Tables[0];
if (ds.Tables[0].Rows.Count == 0)
{
FillEmptyGrid();
}
else
{
grd_Master.DataSource = ds;
grd_Master.DataBind();
}
}
catch (Exception ex)
{
Master.ErrorMessage(ex.Message);
}
}
You need to make sure that the grid has focus. The initial click is likely just setting focus on the grid, and then it sees the second click as starting your edit.
A simple ActiveControl = grd_Master; at the end of the txt_Search_TextChanged event should do the trick.
Is anyone able to understand why m I getting this error?
Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.
SOURCE: ScriptResource.axd
So here is the thing...
I have a button when first clicked (after first site access) works, but after that I always get the error. I tried to debug the subject by putting a debug point at the first line in Page_Load event but its not even getting there.
The error is showing before that on that ScriptResources.axd file which is made of javascript so i tried to debug it but i don't really understand what is going on so i couldn't find the problem.
From what i can understand, somehow, when i first click the button, i must not being initialize some controll i should, but i just can't figure it out.
button id = btnFiltra
HTML
<body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<script type="text/javascript">
Sys.Application.add_load(onPageLoad);
</script>
<asp:Panel runat="server" ID="pHeader" CssClass="PVHeaderBackground">
<img alt="Planview" src="Images/logo_planview.png" class="PVLogoBackImgleft"/>
<div id="PTLogo" class="PTLogosRight">
<img src="Images/logo_meo_preto.png" alt="Meo" style="vertical-align:middle; margin-top:auto; margin-bottom:auto"/>
<img src="Images/Ptlogo.jpg" alt="PT" style="height:50px; width:auto; margin-left:10px; vertical-align:middle;margin-top:auto; margin-bottom:auto"/>
</div>
</asp:Panel>
<asp:UpdatePanel ID="upBody" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Panel runat="server" ID="pOpcoesGlobais" >
<asp:Button ID="btnExtrair" runat="server" OnClientClick="umProjetoApenas()" OnClick="btnExtrair_OnClick" Text="Extrair Dados"/>
<asp:Button ID="btnAtualizar" runat="server" OnClientClick="umProjetoApenas()" OnClick="btnAtualizar_OnClick" Text="Atualizar Dados"/>
</asp:Panel>
<asp:Panel runat="server" ID="pTarefaOkFaturar" Visible="true" style="display:none;" Width="100%" Height="100%" >
<div style="width:100%; height:10%">
<b>Ao confirmar que a tarefa pode ser faturada, todas as parcelas sem documento passarão a ser faturadas de forma automática.</b>
</div>
<div style="width:100%;">
<asp:GridView runat="server" ID="gvCheckParcelas" CssClass="PVPortlet"></asp:GridView>
</div>
<div style="width:100%;position: absolute;bottom: 10px;">
<asp:Button ID="btnOkFaturarCancelar" runat="server" Text="Cancelar" OnClick="btnOkFaturarCancelar_OnClick" style="float:left;margin-left: 10px;"/>
<asp:Button ID="btnOkFaturarOk" runat="server" Text="Concordo" OnClick="btnOkFaturarOk_OnClick" style="float:right;margin-right: 10px;" />
</div>
</asp:Panel>
<asp:Panel runat="server" ID="pBody">
<asp:UpdatePanel ID="upFiltros" runat="server">
<ContentTemplate>
<asp:Label ID="lCliente" runat="server" Text="Cliente"/>
<asp:TextBox ID="txbCliente" runat="server"/>
<asp:PopupControlExtender ID="txbCliente_PopupControlExtender" runat="server" Enabled="True" ExtenderControlID="" TargetControlID="txbCliente"
PopupControlID="pPopUpCliente" Position="Bottom" >
</asp:PopupControlExtender>
<asp:Panel ID="pPopUpCliente" runat="server" Height="116px" BorderStyle="Solid" BorderWidth="2px" Direction="LeftToRight" ScrollBars="Auto" BackColor="#CCCCCC" Style="display: none" >
<asp:CheckBoxList ID="cblCliente" runat="server" DataTextField="DESCRICAO" onChange="uncheckOnTodos(this)" DataValueField="ID" AutoPostBack="False" AppendDataBoundItems="True">
<asp:ListItem Text="Todos" Value="all" Selected="False"></asp:ListItem>
</asp:CheckBoxList>
</asp:Panel>
<asp:Label ID="lPedido" runat="server" Text="Pedido"/>
<asp:TextBox ID="txbPedido" runat="server"/>
<asp:PopupControlExtender ID="txbPedido_PopupControlExtender" runat="server"
Enabled="True" ExtenderControlID="" TargetControlID="txbPedido"
PopupControlID="pPopUpPedido" Position="Bottom" >
</asp:PopupControlExtender>
<asp:Panel ID="pPopUpPedido" runat="server" Height="116px"
BorderStyle="Solid" BorderWidth="2px" Direction="LeftToRight"
ScrollBars="Auto" BackColor="#CCCCCC" Style="display: none" >
<asp:CheckBoxList ID="cblPedido" runat="server"
DataTextField="DESCRICAO" onChange="uncheckOnTodos(this)"
DataValueField="ID" AutoPostBack="False" AppendDataBoundItems="True">
<asp:ListItem Text="Todos" Value="all" Selected="False"></asp:ListItem>
</asp:CheckBoxList>
</asp:Panel>
<asp:Label ID="lProjeto" runat="server" Text="Projeto"/>
<asp:TextBox ID="txbProjeto" runat="server"/>
<asp:PopupControlExtender ID="txbProjeto_PopupControlExtender" runat="server"
Enabled="True" ExtenderControlID="" TargetControlID="txbProjeto"
PopupControlID="pPopUpProjeto" Position="Bottom" >
</asp:PopupControlExtender>
<asp:Panel ID="pPopUpProjeto" runat="server" Height="116px"
BorderStyle="Solid" BorderWidth="2px" Direction="LeftToRight" ScrollBars="Auto" BackColor="#CCCCCC" Style="display: none" >
<asp:CheckBoxList ID="cblProjeto" runat="server"
DataTextField="DESCRICAO" onChange="uncheckOnTodos(this)"
DataValueField="ID" AutoPostBack="False" AppendDataBoundItems="True">
<asp:ListItem Text="Todos" Value="all" Selected="False"></asp:ListItem>
</asp:CheckBoxList>
</asp:Panel>
<asp:Button runat="server" ID="btnFiltra" Text="Pesquisar"
onclick="btnFiltra_Click"/>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="uprgTarefas" runat="server" AssociatedUpdatePanelID="upTarefas" DisplayAfter="2000" >
<ProgressTemplate>Loading...</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="upTarefas" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnFiltra" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnAtualizar" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnExtrair" EventName="Click" />
</Triggers>
<ContentTemplate>
<div id="dTabelaTarefaHeader" class="PVPortletHeader">
<div id="dTabelaTarefasOpcoes" class="PVPortletHeaderOpcoes"></div>
<b>Tarefas Faturação</b>
</div>
<asp:Panel runat="server" ID="pgvTarefasEmpty" Visible="false">
<table class="PVPortlet">
<tbody>
<tr>
<th></th>
<th>ID</th>
<th>Projeto</th>
<th>Tarefa</th>
<th>Cliente</th>
<th>Pedido</th>
<th>Inicio</th>
<th>Fim</th>
<th>Faturar?</th>
<th>Planeado</th>
<th>Remanescente</th>
<th>Faturado</th>
<th>Entidade</th>
</tr>
<tr>
<td colspan="13">Sem dados...</td>
</tr>
</tbody>
</table>
</asp:Panel>
<asp:GridView ID="gvTarefas" runat="server" AutoGenerateSelectButton="true"
AutoGenerateColumns="false" CssClass="PVPortlet" SelectedRowStyle-CssClass="PVPortletSelectedRow"
onselectedindexchanged="gvTarefas_SelectedIndexChanged" DataKeyNames="ID"
OnRowCreated="gvTarefas_OnRowCreated">
<columns>
<asp:BoundField DataField="ID" HtmlEncode="false" HeaderText="ID" />
<asp:BoundField DataField="Projeto" HtmlEncode="false" HeaderText="Projeto" />
<asp:BoundField DataField="Tarefa" HtmlEncode="false" HeaderText="Tarefa" />
<asp:BoundField DataField="Cliente" HtmlEncode="false" HeaderText="Cliente" />
<asp:BoundField DataField="Pedido" HtmlEncode="false" HeaderText="Pedido" />
<asp:BoundField DataField="DataInicio" DataFormatString="{0:dd-MM-yyyy}" HeaderText="Inicio" />
<asp:BoundField DataField="DataFim" DataFormatString="{0:dd-MM-yyyy}" HeaderText="Fim" />
<asp:TemplateField HeaderText="Faturar?">
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbFaturar" Checked='<%# Eval("ProntoAFaturar") %>' AutoPostBack="true" OnCheckedChanged="cb_OnCheckedChanged"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Planeado" HeaderText="Planeado" />
<asp:BoundField DataField="Remanescente" HeaderText="Remanescente" />
<asp:BoundField DataField="Faturado" HeaderText="Faturado" />
<utl:CompositeBoundField HeaderText="Entidade" DataField="EntidadeResponsavel.Descricao" />
</columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<br />
<br />
<asp:UpdateProgress ID="uprgParcelas" runat="server"
AssociatedUpdatePanelID="upParcelas" DisplayAfter="2000">
<ProgressTemplate>Loading...</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="upParcelas" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:asyncpostbacktrigger controlid="gvTarefas"
EventName="SelectedIndexChanged" />
<asp:asyncpostbacktrigger controlid="gvParcelas" EventName="RowEditing" />
</Triggers>
<ContentTemplate>
<div ID="dTabelaParcelasHeader" class="PVPortletHeader">
<b>Parcelas Faturação</b>
</div>
<asp:Panel ID="pgvParcelasEmpty" runat="server" Visible="false">
<table class="PVPortlet">
<tbody>
<tr>
<th></th>
<th>ID</th>
<th>Auto</th>
<th>DataEnvio</th>
<th>Descrição</th>
<th>Valor</th>
</tr>
<tr>
<td colspan="6">Sem dados...</td>
</tr>
</tbody>
</table>
</asp:Panel>
<asp:GridView ID="gvParcelas" runat="server" AutoGenerateColumns="false" AutoGenerateDeleteButton="true" AutoGenerateEditButton="true"AutoGenerateSelectButton="true" CssClass="PVPortlet" DataKeyNames="ID" OnRowCancelingEdit="gvParcelas_OnRowCancelingEdit"
OnRowCommand="gvParcelas_OnRowCommand" OnRowCreated="gvParcelas_OnRowCreated" OnRowDeleting="gvParcelas_OnRowDeleting" OnRowEditing="gvParcelas_RowEditing" OnRowUpdating="gvParcelas_OnRowUpdating" Visible="false" SelectedRowStyle-CssClass="PVPortletSelectedRow"
OnSelectedIndexChanged="obterDocumento_OnSeacrh" ShowFooter="True">
<Columns>
<asp:TemplateField HeaderText="ID">
<EditItemTemplate>
<asp:Label ID="lIDParcela" runat="server" Text='<%# Eval("ID") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lIDParcela" runat="server" Text='<%# Eval("ID") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnParcelaNovo" runat="server" CommandName="Insert" Text="Novo" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Auto">
<EditItemTemplate>
<asp:CheckBox ID="cbAuto" runat="server" Checked='<%# Eval("Auto") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="cbAuto" runat="server" Checked='<%# Eval("Auto") %>' Enabled="false"/>
</ItemTemplate>
<FooterTemplate>
<asp:CheckBox ID="cbAuto" runat="server" Checked="true" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DataEnvio">
<EditItemTemplate>
<asp:TextBox ID="txbDataEnvio" runat="server" Text='<%# Eval("DataEnvio","{0:dd-MM-yyyy}") %>' />
<asp:CalendarExtender ID="txbDataEnvio_CalendarExtender" runat="server"
DefaultView="Months" Enabled="True" Format="MM-yyyy" PopupPosition="BottomLeft"
TargetControlID="txbDataEnvio">
</asp:CalendarExtender>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lDataEnvio" runat="server"
Text='<%# Eval("DataEnvio","{0:dd-MM-yyyy}") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txbDataEnvio" runat="server" Text="" />
<asp:CalendarExtender ID="txbDataEnvio_CalendarExtender" runat="server"
DefaultView="Months" Enabled="True" Format="MM-yyyy" PopupPosition="BottomLeft"
TargetControlID="txbDataEnvio">
</asp:CalendarExtender>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Descrição">
<EditItemTemplate>
<asp:TextBox ID="txbDescricao" runat="server" Text='<%# Eval("Descricao") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lDescricao" runat="server" Text='<%# Eval("Descricao") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txbDescricao" runat="server" Text="" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Valor">
<EditItemTemplate>
<asp:TextBox ID="txbValor" runat="server" Text='<%# Eval("Valor") %>' />
<asp:FilteredTextBoxExtender ID="txbValor_FilteredTextBoxExtender" runat="server" FilterType="Custom" TargetControlID="txbValor" ValidChars="0123456789,">
</asp:FilteredTextBoxExtender>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lValor" runat="server" Text='<%# Eval("Valor") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txbValor" runat="server" Text="" />
<asp:FilteredTextBoxExtender ID="txbValor_FilteredTextBoxExtender"
runat="server" FilterType="Numbers" TargetControlID="txbValor">
</asp:FilteredTextBoxExtender>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="uprgDocumentos" runat="server"
AssociatedUpdatePanelID="upDocumentos" DisplayAfter="2000">
<ProgressTemplate>Loading...</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="upDocumentos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div ID="dTabelaDocumentosHeader" class="PVPortletHeader">
<div ID="dTabelaDocumentosOpcoes" class="PVPortletHeaderOpcoes">
<asp:Label ID="lDocInicio" runat="server" Text="Inicio" style="float:left;"></asp:Label>
<asp:TextBox ID="txbInicio" runat="server" style="float:left;"></asp:TextBox>
<asp:CalendarExtender ID="txbInicio_CalendarExtender" runat="server" Enabled="True" Format="MM-yyyy" TargetControlID="txbInicio">
</asp:CalendarExtender>
<asp:Label ID="lDocFim" runat="server" Text="Fim" style="float:left;"></asp:Label>
<asp:TextBox ID="txbFim" runat="server" style="float:left;"></asp:TextBox>
<asp:CalendarExtender ID="txbFim_CalendarExtender" runat="server" Enabled="True" Format="MM-yyyy" TargetControlID="txbFim">
</asp:CalendarExtender>
<asp:Button ID="btnDocFiltro" runat="server" Text="Pesquisar" style="float:left;" OnClick="obterDocumento_OnSeacrh"/>
</div>
<b>Documentos Faturação</b>
<asp:Button ID="btnNovoDocumento" runat="server" OnClientClick="abrirDocumento(0);" Text="Novo" style="float:right;"/>
</div>
<asp:Panel ID="pgvDocumentosEmpty" runat="server" Visible="false">
<table class="PVPortlet">
<tbody>
<tr>
<th></th>
<th>ID</th>
<th>Fatura</th>
<th>Enviado</th>
<th>Estado</th>
<th>Tipo</th>
<th>Descrição</th>
<th>Valor</th>
</tr>
<tr>
<td colspan="8">Sem dados...</td>
</tr>
</tbody>
</table>
</asp:Panel>
<asp:GridView ID="gvDocumentos" runat="server" AutoGenerateColumns="false" AutoGenerateDeleteButton="false" AutoGenerateEditButton="false" AutoGenerateSelectButton="false" CssClass="PVPortlet">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton Text="Abrir" runat="server" ID="lbtnAbrirDoc" OnClientClick='<%#"abrirDocumento(" + Eval("ID") + ");"%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ID" HeaderText="ID" HtmlEncode="false" />
<asp:BoundField DataField="NFATURA" HeaderText="Fatura" HtmlEncode="false" />
<asp:BoundField DataField="EnviadoA" DataFormatString="{0:dd-MM-yyyy}" HeaderText="Enviado" HtmlEncode="false" />
<utl:CompositeBoundField DataField="Estado.Descricao" HeaderText="Estado" HtmlEncode="false" />
<utl:CompositeBoundField DataField="Tipo.Descricao" HeaderText="Tipo" HtmlEncode="false" />
<asp:TemplateField HeaderText="Descrição">
<ItemTemplate>
<asp:Label ID="lCabecalho" runat="server" Text='<%#Eval("Cabecalho").ToString().Cut(30,true)+"-"+Eval("Periodo")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Valor" HeaderText="Valor" HtmlEncode="false" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
Server SIde
protected void Page_Load(object sender, EventArgs e)
{
userName = HttpContext.Current.User.Identity.Name.ToString().ToUpper();
sessionID = Session.SessionID;
if (!IsPostBack)
{
Session["USER_" + sessionID] = userName;
Session["TAREFAS_INV_" + sessionID] = null;
Session["PARCELAS_"+sessionID] = null;
Session["DOCUMENTOS_"+sessionID] = null;
carregaDadosFiltros();
string idPrj = null;
obtemParametrosEntrada(ref idPrj);
pgvDocumentosEmpty.Visible = true;
pgvParcelasEmpty.Visible = true;
pgvTarefasEmpty.Visible = true;
gvDocumentos.Visible = false;
gvParcelas.Visible = false;
gvTarefas.Visible = false;
if (!string.IsNullOrEmpty(idPrj))
{
bool filtra = true;
if (cblProjeto.Items.FindByValue(idPrj) != null)
{
cblProjeto.SelectedValue = idPrj;
}
else
{
string nome = InvDataAccess.obterNomeProjeto(idPrj);
if(!string.IsNullOrEmpty(nome))
{
ListItem prj = new ListItem(nome, idPrj, true);
cblProjeto.Items.Add(prj);
cblProjeto.SelectedValue = prj.Value;
}
else
filtra = false;
}
cblCliente.SelectedValue = "all";
cblPedido.SelectedValue = "all";
if(filtra) btnFiltra_Click(null, null);
}
}
else
{
userName = Session["USER_" + sessionID] as string;
DateTime inicio = DateTime.MinValue, fim = DateTime.MaxValue;
if (!DateTime.TryParseExact(txbInicio.Text, txbInicio_CalendarExtender.Format, null, System.Globalization.DateTimeStyles.None, out inicio))
txbInicio_CalendarExtender.SelectedDate = DateTime.MinValue;
if (!DateTime.TryParseExact(txbFim.Text, txbFim_CalendarExtender.Format, null, System.Globalization.DateTimeStyles.None, out fim))
txbFim_CalendarExtender.SelectedDate = DateTime.MaxValue;
if (Session["TAREFAS_INV_"+sessionID] != null)
tarefas = (Dictionary<int, InvTarefas>)Session["TAREFAS_INV_"+sessionID];
if (Session["PARCELAS_"+sessionID] != null)
{
parcelas = (Dictionary<int, InvParcelaTarefa>)Session["PARCELAS_"+sessionID];
gvParcelas.DataSource = parcelas.Values.ToList();
}
if (Session["DOCUMENTOS_"+sessionID] != null)
{
documentos = (Dictionary<int, InvDocumento>)Session["DOCUMENTOS_"+sessionID];
gvDocumentos.DataSource = documentos.Values.ToList();
}
}
}
protected void btnFiltra_Click(object sender, EventArgs e)
{
tarefas.Clear();
List<string> idCliente, idPedido, idProjeto;
DateTime inicio, fim;
idCliente = cblCliente.Items.Cast<ListItem>().Where(i => i.Selected).Select(i => i.Value).ToList();
idPedido = cblPedido.Items.Cast<ListItem>().Where(i => i.Selected).Select(i => i.Value).ToList();
idProjeto = cblProjeto.Items.Cast<ListItem>().Where(i => i.Selected).Select(i => i.Value).ToList();
inicio = DateTime.MinValue;
fim = DateTime.MaxValue;
List<InvTarefas> tars = InvTarefas.getInvTarefas(new List<string>{"all"}, idCliente, idPedido, idProjeto, inicio, fim);
if (tars != null && tars.Count > 0)
{
foreach (InvTarefas tar in tars)
{
tarefas.Add(tar.ID, tar);
}
this.Session["TAREFAS_INV_"+sessionID] = tarefas;
gvTarefas.DataSource = tarefas.Values.ToList();
gvTarefas.DataBind();
pgvTarefasEmpty.Visible = false;
gvTarefas.Visible = true;
}
else
{
this.Session["TAREFAS_INV_"+sessionID] = null;
pgvTarefasEmpty.Visible = true;
gvTarefas.Visible = false;
}
}
After some help from a colleague, we found that the gvTarefas_OnRowCreated event was firing before the Page_load and that the code inside was trowing null exception.
I was also advised to change my event to OnRowDataBound.
Also, for those of you who didn't knew you can set (when in trouble, otherwise is to much load) VS to stop on the line that throwed the exception by going Debug->Exceptions->Throw in Common Language Runtime Exceptions. If i knew this I probably had solved it right away.
Now, about the strange OnRowCreated before Page_Load, i still can't understand, but something tells me it's because of my UpdatePanel upBody that catches most of the page and its update mode is in Always (is the default value).
Last, i'm putting my OnRowCreated code
protected void gvTarefas_OnRowCreated(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
InvTarefas tar = e.Row.DataItem as InvTarefas;
if (tar.EntidadeResponsavel != InvEntidadeResponsavel.PV_PROPRIO)
{
e.Row.Enabled = false;
e.Row.CssClass = "PVPortlet_DisabledRoW";
}
}
}
I have a datagrid and it has a checkbox in rows. I want to change background color of row when checkbox is clicked. Example code:
<asp:DataGrid ID="Grid" runat="server" DataKeyField="KeyID" CssClass="grid"
AutoGenerateColumns="False" CellPadding="10" ForeColor="#333333"
GridLines="None" OnPageIndexChanged="Grid_PageIndexChanged"
OnEditCommand="Grid_EditCommand" OnDeleteCommand="GetResult"
onitemdatabound="Grid_ItemDataBound" >
<Columns>
<HeaderTemplate>
<input id="chkAllItems" type="checkbox" onclick="javascript:HeaderClick(this);"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "KeyID")%>' ID="checkBoxID" AutoPostBack="false" OnClick="chechkedChanged(this);" ></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
<label for="male">Category</label>
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox Text="" ID="Category" runat="server" AutoPostBack="false" MaxLength="10" CssClass="tb5" > </asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" HeaderText="Edit">
</asp:EditCommandColumn>
<asp:ButtonColumn CommandName="Delete" HeaderText="TDK" Text="tdk"></asp:ButtonColumn>
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<SelectedItemStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" Mode="NumericPages" />
<AlternatingItemStyle BackColor="#FAAC58" />
<ItemStyle BackColor="#81DAF5" ForeColor="#333333" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
</asp:DataGrid>
How can I change background color of row in javascript ?
My simple GridView control contains Checkbox, Dept No, Dept Name, Location columns.
When clicked on CheckBox, the corresponding row background color changes to Red background. Javascript code inside .aspx page plays major role to achieve your functionality.
.aspx code is below:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function ChangeBackgroundColor(checkBox1) {
var parent = document.getElementById("<%= GridView1.ClientID %>");
var items = parent.getElementsByTagName("input");
for (i = 0; i < items.length; i++) {
if ((items[i].type == "checkbox") && (items[i].checked)) {
alert(items[i].id + ' is checked');
items[i].parentElement.parentElement.style.backgroundColor = "Red";
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" onclick="javascript:ChangeBackgroundColor(this);" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Dept No">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("DeptNo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Dept name">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("DName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Location">
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("LOC") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
Code behind code is given below.
SqlConnection objConn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["STERIAConnectionString"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
var objCmd = new SqlCommand("SELECT * FROM DEPT", objConn);
objConn.Open();
GridView1.DataSource = objCmd.ExecuteReader();
GridView1.DataBind();
objConn.Close();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var checkbox1 = e.Row.FindControl("CheckBox1") as CheckBox;
checkbox1.Attributes.Add("OnClick","return ChangeBackgroundColor('checkbox1');");
}
}
Hope this code helps you. Let me know if you need some more help.
<asp:Panel ID="pnlGrdShift" runat="server" ScrollBars="Auto" Width="900px" Height="520px" CssClass="srcColor">
<cc1:GridView ID="gvShift" runat="server" AutoGenerateColumns="False" AllowSorting="True"
CssClass="grid"
OnDataBound="gvShift_DataBound"
DataSourceID="odsShiftDetails"
AllowPaging="True"
ShowFooter="false"
onrowcancelingedit="gvShift_RowCancelingEdit"
onrowcommand="gvShift_RowCommand"
onrowdeleting="gvShift_RowDeleting"
onrowediting="gvShift_RowEditing"
onrowupdating="gvShift_RowUpdating"
OnSelectedIndexChanged="gvShift_SelectedIndexChanged"
OnRowDataBound="gvShift_RowDataBound">
<AlternatingRowStyle CssClass="altrowstyle" />
<HeaderStyle CssClass="headerstyle" />
<RowStyle CssClass="rowstyle" Wrap="false" />
<EmptyDataRowStyle BackColor="#edf5ff" Height="300px" VerticalAlign="Middle" HorizontalAlign="Center" />
<EmptyDataTemplate >
No Records Found
</EmptyDataTemplate>
<Columns>
<asp:TemplateField HeaderText="E Code" SortExpression="userecode" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Names="Calibre" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblUserECode" runat="server" Text='<%#Eval("userecode") %>' CssClass="GridContent" />
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="lblEditUserECode" runat="server" Text='<%#Eval("userecode") %>' style="width:50px;" CssClass="GridContent" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="User Name" SortExpression="username" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Names="Calibre" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblUserName" runat="server" Text='<%#Eval("username") %>' CssClass="GridContent" />
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="lblEditUserName" runat="server" Text='<%#Eval("username") %>' style="width:100px;" CssClass="GridContent"/>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Shift Start Time" SortExpression="ShiftStartTime" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Names="Calibre" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblShiftStartTime" runat="server" Text='<%#Eval("ShiftStartTime") %>' CssClass="GridContent"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="ddlShiftStartTime" runat="server" Text='<%#Eval("ShiftStartTime") %>' style="width:65px;" CssClass="GridContent" />
<asp:RegularExpressionValidator ID="RegularExpValidatorddlShiftStartTime" runat="server" ControlToValidate="ddlShiftStartTime" ValidationExpression="^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$" ErrorMessage="*" Font-Bold="true" ForeColor="Red" ToolTip="Must be in HH:MM" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Shift End Time" SortExpression="ShiftEndTime" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Names="Calibre" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblShiftEndTime" runat="server" Text='<%#Eval("ShiftEndTime") %>' CssClass="GridContent" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="ddlShiftEndTime" runat="server" Text='<%#Eval("ShiftEndTime") %>' style="width:65px;" CssClass="GridContent" />
<asp:RegularExpressionValidator ID="RegularExpValidatorddlShiftEndTime" runat="server" ControlToValidate="ddlShiftEndTime" ValidationExpression="^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$" ErrorMessage="*" Font-Bold="true" ForeColor="Red" ToolTip="Must be in HH:MM" />
</EditItemTemplate>
</asp:TemplateField>
<%--<asp:BoundField DataField="ShiftEndTIme" HeaderText="Shift End Time" SortExpression="ShiftEndTIme"/>--%>
<asp:TemplateField HeaderText="Saturday Shift Start Time" SortExpression="WeekendShiftStartTime" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Names="Calibre" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblWeekendShiftStartTime" runat="server" Text='<%#Eval("WeekendShiftStartTime") %>' CssClass="GridContent" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="ddlWeekendShiftStartTime" runat="server" Text='<%#Eval("WeekendShiftStartTime") %>' style="width:65px;" CssClass="GridContent" />
<asp:RegularExpressionValidator ID="RegularExpValidatorddlWeekendShiftStartTime" runat="server" ControlToValidate="ddlWeekendShiftStartTime" ValidationExpression="^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$" ErrorMessage="*" Font-Bold="true" ForeColor="Red" ToolTip="Must be in HH:MM" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Saturday Shift End Time" SortExpression="weekendshiftendtime" HeaderStyle-Font-Bold="true" HeaderStyle-Font-Names="Calibre" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblWeekendShiftEndTime" runat="server" Text='<%#Eval("weekendshiftendtime") %>' CssClass="GridContent"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="ddlWeekendShiftEndTime" runat="server" Text='<%#Eval("weekendshiftendtime") %>' style="width:65px;" CssClass="GridContent" />
<asp:RegularExpressionValidator ID="RegularExpValidatorddlWeekendShiftEndTime" runat="server" ControlToValidate="ddlWeekendShiftEndTime" ValidationExpression="^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$" ErrorMessage="*" Font-Bold="true" ForeColor="Red" ToolTip="Must be in HH:MM" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False" >
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="Update" ForeColor="White"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" ForeColor="White"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" ForeColor="White"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerTemplate >
<table width="100%" >
<tr>
<td style="text-align: left">
Page Size:
<asp:DropDownList ID="ddPageSize" runat="server" EnableViewState="true" OnSelectedIndexChanged="ddPageSize_SelectedIndexChanged" AutoPostBack="true" style="width:50px;">
<asp:ListItem Text="10" ></asp:ListItem>
<asp:ListItem Text="20" ></asp:ListItem>
<asp:ListItem Text="30" ></asp:ListItem>
<asp:ListItem Text="40" ></asp:ListItem>
<asp:ListItem Text="50" ></asp:ListItem>
</asp:DropDownList>
</td>
<td style="text-align: right">
<asp:Label ID="lblPageCount" runat="server"></asp:Label>
</td>
</tr>
</table>
</PagerTemplate>
</cc1:GridView>
</asp:Panel></td></tr>
</table>
<div style="margin-top:5px" class="PagerGrid">
<asp:DataPager ID="pager" runat="server" PagedControlID="gvShift">
<Fields>
<asp:NextPreviousPagerField FirstPageText="<<" LastPageText=">>"
NextPageText=">" PreviousPageText="<" ShowFirstPageButton="True"
ShowNextPageButton="False" ButtonCssClass="datapager" />
<asp:NumericPagerField ButtonCount="10" NumericButtonCssClass="datapager" CurrentPageLabelCssClass="datapager" />
<asp:NextPreviousPagerField LastPageText=">>" NextPageText=">"
ShowLastPageButton="True" ShowPreviousPageButton="False" ButtonCssClass="datapager" />
</Fields>
</asp:DataPager>
</div>
<br />
<asp:ObjectDataSource ID="odsShiftDetails" runat="server"
SelectMethod="GetShiftInfoSortedPage" TypeName="EQ.DAL.ShiftInfoDB"
EnablePaging="True" SelectCountMethod="GetShiftInfoCount"
SortParameterName="sortExpression">
<SelectParameters>
<asp:ControlParameter ControlID="hfSearchCriteria" Name="searchCriteria" Direction="Input" />
</SelectParameters>
</asp:ObjectDataSource>
Code behind for Row Updation is:-
protected void gvShift_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
try
{
TextBox txtShiftStartTime = (TextBox)gvShift.Rows[e.RowIndex].FindControl("ddlShiftStartTime");
TextBox txtShiftEndTime = (TextBox)gvShift.Rows[e.RowIndex].FindControl("ddlShiftEndTime");
TextBox txtWeekendShiftStartTime = (TextBox)gvShift.Rows[e.RowIndex].FindControl("ddlWeekendShiftStartTime");
TextBox txtWeekendShiftEndTime = (TextBox)gvShift.Rows[e.RowIndex].FindControl("ddlWeekendShiftEndTime");
Label lblUserecode = (Label)gvShift.Rows[e.RowIndex].FindControl("lblEditUserECode");
string userecode = lblUserecode.Text.ToString();
string _ShiftStart = txtShiftStartTime.Text.ToString();
string _ShiftEnd = txtShiftEndTime.Text.ToString();
string _WeekendShiftStart = txtWeekendShiftStartTime.Text.ToString();
string _WeekendShiftend = txtWeekendShiftEndTime.Text.ToString();
EmployeeQuotientCL.Entities.ConfigurationVariables _configVariables = new ConfigurationVariables();
string databaseConnectionString = _configVariables.ConnectionString;
SqlConnection sqlConnection = null;
if (((databaseConnectionString + string.Empty) != string.Empty))
{
DBConnect dbConnect = new DBConnect(_configVariables.ConnectionString);
sqlConnection = dbConnect.SQLConnection;
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConnection;
cmd.CommandText = "UPDATE UserInfo SET ShiftStartTime ='" + _ShiftStart + "',ShiftEndTime='" + _ShiftEnd.ToString() + "',Weekendshiftstarttime='" + _WeekendShiftStart.ToString() + "',Weekendshiftendtime='" + _WeekendShiftend.ToString() + "' WHERE UserECode=" + userecode.ToString();
sqlConnection.Open();
cmd.ExecuteNonQuery();
gvShift.DataSource = null;
gvShift.DataBind();
sqlConnection.Close();
}
}
catch (Exception ex)
{
}
}
While Updating the Rows in grid , I am getting the below error message.
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: >Updating is not supported by ObjectDataSource 'odsShiftDetails' unless the UpdateMethod is >specified.
Guide me how to fix this error. Thanks in advance.
You need to add an update method to your gridview. Look at this tutorial: Gridview ObjectdataSource