Search not working on Gridview - javascript

I have Implemented the Search on gridview for columns from this
link. I implemented as per my requirement.But it is not working for me. Please see the code for your reference:-
<asp:GridView ID="grdCSRPageData" runat="server" Width="100%" border="1" Style="border: 1px solid #E5E5E5;" CellPadding="3" class="hoverTable" AutoGenerateColumns="false" AllowPaging="True" BackColor="#E5E5E5" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" ForeColor="Black" GridLines="Vertical" ShowFooter="true" PageSize="5" OnPageIndexChanging="grdCSRPageData_PageIndexChanging" OnRowCancelingEdit="grdCSRPageData_RowCancelingEdit" OnRowEditing="grdCSRPageData_RowEditing" OnRowUpdating="grdCSRPageData_RowUpdating" OnRowDeleting="grdCSRPageData_RowDeleting" OnRowCommand="grdCSRPageData_RowCommand" OnDataBound="grdCSRPageData_DataBound">
<AlternatingRowStyle BackColor="#CCCCCC" />
<Columns>
<asp:BoundField DataField="page_title" HeaderText="Page Title" ItemStyle-Width="30" />
<asp:BoundField DataField="page_description" HeaderText="Page Description" ItemStyle-Width="30" />
<asp:BoundField DataField="meta_title" HeaderText="Meta Title" ItemStyle-Width="30" />
<asp:BoundField DataField="meta_keywords" HeaderText="Meta Keywords" ItemStyle-Width="30" />
<asp:BoundField DataField="meta_description" HeaderText="Meta Description" ItemStyle-Width="30" />
<asp:CheckBoxField DataField="Active" HeaderText="Active" ItemStyle-Width="15" />
<asp:TemplateField HeaderText="Edit/Delete" HeaderStyle-Width="15%">
<ItemTemplate>
<asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Edit" Text="Edit" />
<span onclick="return confirm('Are you sure want to delete?')">
<asp:LinkButton ID="btnDelete" Text="Delete" runat="server" CommandName="Delete"></asp:LinkButton>
</span>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="btnUpdate" Text="Update" runat="server" CommandName="Update" />
<asp:LinkButton ID="btnCancel" Text="Cancel" runat="server" CommandName="Cancel" />
</EditItemTemplate>
<HeaderTemplate>
<asp:Button ID="btnInsertRecord" runat="server" Text="Add" CommandName="Insert" />
</HeaderTemplate>
<HeaderStyle Width="15%"></HeaderStyle>
</asp:TemplateField>
</Columns>
</asp:GridView>
Also see the JS script
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="js/quicksearch.js"></script>
<script type="text/javascript">
$(function () {
$('.form-control').each(function (i) {
$(this).quicksearch("[id*=grdCSRPageData] tr:not(:has(th))", {
'testQuery': function (query, txt, row) {
return $(row).children(":eq(" + i + ")").text().toLowerCase().indexOf(query[0].toLowerCase()) != -1;
}
});
});
});
</script>
Also see the code behind for your ref:-
protected void grdCSRPageData_DataBound(object sender, EventArgs e)
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
for (int i = 0; i < grdCSRPageData.Columns.Count; i++)
{
TableHeaderCell cell = new TableHeaderCell();
TextBox txtSearch = new TextBox();
txtSearch.Attributes["placeholder"] = grdCSRPageData.Columns[i].HeaderText;
txtSearch.CssClass = "form-control";
cell.Controls.Add(txtSearch);
row.Controls.Add(cell);
}
grdCSRPageData.HeaderRow.Parent.Controls.AddAt(1, row);
}
Changes for the grid
protected void grdUser_DataBound(object sender, EventArgs e)
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
for (int i = 0; i < grdUser.Columns.Count; i++)
{
TableHeaderCell cell = new TableHeaderCell();
TextBox txtSearch = new TextBox();
txtSearch.Attributes["placeholder"] = grdUser.Columns[i].HeaderText;
txtSearch.CssClass = "form-control HaydaBre";
if (grdUser.Columns[i].HeaderText != "Action" && grdUser.Columns[i].HeaderText != "" && grdUser.Columns[1].HeaderText != "Select") // && grdUser.Columns[i].HeaderText != "" && grdUser.Columns[i].HeaderText != null && grdUser.Columns[i].HeaderText != "Select")
{
cell.Controls.Add(txtSearch);
}
row.Controls.Add(cell);
}
grdUser.HeaderRow.Parent.Controls.AddAt(1, row);
}
When I add the HeaderText != Select. It stops working for the first column, but it works for the other column

There are a lot of elements with form-control class. So can you change your C# code to be:
protected void grdCSRPageData_DataBound(object sender, EventArgs e)
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
for (int i = 0; i < grdCSRPageData.Columns.Count; i++)
{
TableHeaderCell cell = new TableHeaderCell();
TextBox txtSearch = new TextBox();
txtSearch.Attributes["placeholder"] = grdCSRPageData.Columns[i].HeaderText;
txtSearch.CssClass = "form-control HaydaBre";
cell.Controls.Add(txtSearch);
row.Controls.Add(cell);
}
grdCSRPageData.HeaderRow.Parent.Controls.AddAt(1, row);
}
and your JS code to be:
<script type="text/javascript">
$(function () {
$('.HaydaBre').each(function (i) {
$(this).quicksearch("[id*=grdCSRPageData] tr:not(:has(th))", {
'testQuery': function (query, txt, row) {
return $(row).children(":eq(" + i + ")").text().toLowerCase().indexOf(query[0].toLowerCase()) != -1;
}
});
});
});
</script>

Related

Check/Unchek asp checkbox

I want to check and uncheck several ASP checkboxes with the event of other ASP checkbox.
I want that the checkbox with ID "chkSelecAllGtias" can check and uncheck the checkboxes of the "GridView" with the ID "chkSeleccionarGtia"
Here my ASP code:
<div id="divGtiasLn" runat="server">
<div class="formRow" id="tLineasG" style="padding:10px 20px 20px 20px">
<label style="font-weight:bold">Título de la cabecera</label>
<div class="BotonesOpcion AlineaDerecha">
<div class="label">
Seleccionar Todas
<asp:CheckBox id='chkSelecAllGtias' runat='server'></asp:CheckBox>
</div>
</div>
<div style="width:100%;max-height:350px;overflow:auto">
<asp:GridView ID="rgDatosGtias" runat="server" AutoGenerateColumns="false" EmptyDataText="No se encontraron" DataKeyNames="DataField1,DataField2,DataField3,DataField4" AlternatingRowStyle-BackColor="#DAE2E8">
<Columns>
<asp:TemplateField HeaderText="Seleccionar">
<ItemTemplate>
<asp:CheckBox ID="chkSeleccionarGtia" runat="server" AutoPostBack="true" OnCheckedChanged="chkSeleccionarGtia_Check" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="DataField1" HeaderText="Número1" />
<asp:BoundField DataField="DataField2" HeaderText="Número2" Visible="false" />
<asp:BoundField DataField="DataField3" HeaderText="Número3" />
<asp:BoundField DataField="DataField4" HeaderText="Número4" />
<asp:BoundField DataField="DataField5" HeaderText="Número5" />
<asp:BoundField DataField="DataField6" HeaderText="" Visible="false" />
<asp:BoundField DataField="DataField7" HeaderText="" Visible="false" />
<asp:BoundField DataField="DataField8" HeaderText="" Visible="false" />
</Columns>
</asp:GridView>
</div>
</div>
</div>
My C# code:
protected void Page_Load(object sender, EventArgs e)
{
try
{
chkSelecAllGtias.Attributes.Add("OnClick", "SeleccionarTodasGtias();");
}
catch (Exception ex)
{
msjError.MostrarInfo(ex.InnerException.Message);
}
}
And my JS code:
function SeleccionarTodasGtias() {
console.log("Dentro");
$('#chkSeleccionarGtia').prop('checked', true);
$('#chkSeleccionarGtia').prop('checked', false);
$('#chkSelecAllGtias').prop('checked', true);
$('#chkSelecAllGtias').prop('checked', false);
//$('<=chkSelecAllGtias.ClientID%>').attr('checked', false);
//var objState1 = $find("<%= chkSelecAllGtias.ClientID %>");
console.log("objState1 -> " + objState1);
if (document.getElementById('chkSelecAllGtias').checked == true) {
document.getElementById('chkSeleccionarGtia').checked = true;
alert("true");
}
else {
document.getElementById('chkSeleccionarGtia').checked = false;
alert("false");
}
}
I have tried with only JS but it did not work.
And some combinations of this:
$("#Checkbox1").prop('checked', true); //// To check
$("#Checkbox1").prop('checked', false); //// To un check
And it didn't work
You can do it like this (my example has check box at botton, but it don't matter.
So, this:
<asp:CheckBox id='chkSelecAllGtias' runat='server'
onclick="myheadcheck(this)" >
</asp:CheckBox>
<script>
function myheadcheck(btn) {
// get the ONE check box, checked, or not???
var bolChecked = $(btn).is(':checked')
// now set all check boxes
MyTable = $('#<%= grdEmp.ClientID %>') // select and get grid
MyCheckBoxs = MyTable.find('input:checkbox') // select all check boxes in grid
MyCheckBoxs.each(function () {
$(this).prop('checked', bolChecked)
})
}
</script>
So, I don't have your data, but say I have this gridview, and then a check box.
So, this:
<h3>Select Hotels</h3>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" CssClass="table table-hover" width="50%">
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName" />
<asp:BoundField DataField="HotelName" HeaderText="HotelName" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:TemplateField HeaderText="Select" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="chkSel" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:CheckBox ID="chkHeader" runat="server" Text="Select/unselect All" onclick="myheadcheck(this)" />
<script>
function myheadcheck(btn) {
// get the ONE check box, checked, or not???
var bolChecked = $(btn).is(':checked')
// now set all check boxes
MyTable = $('#<%= GridView1.ClientID %>') // select and get grid
MyCheckBoxs = MyTable.find('input:checkbox') // select all check boxes in grid
MyCheckBoxs.each(function () {
$(this).prop('checked', bolChecked)
})
}
</script>
Code to load is thus this:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadGrid();
}
}
protected void LoadGrid()
{
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
{
string strSQL = "SELECT * FROM tblHotelsA ORDER BY HotelName";
using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
{
DataTable rstData = new DataTable();
conn.Open();
rstData.Load(cmdSQL.ExecuteReader());
GridView1.DataSource = rstData;
GridView1.DataBind();
}
}
}
And now we get/see this:
function CheckAll() {
var chk = $(".chkall").prop("checked");
$("<checkbox name> input:checkbox").each(function (index, item) {
$(item).prop("checked", chk);
});
}

How to prevent the page refresh on link click in asp.net?

I have the code below
protected void BubbleButton_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "Expand")
{
string strMonth = string.Empty;
string status = string.Empty;
string strCategory = "";
int idxCategory = 0;
if (e.CommandArgument != null)
{
string[] commandArgs = e.CommandArgument.ToString().Split(new string[] { "^" }, StringSplitOptions.None);
strCategory = commandArgs[0];
strMonth = commandArgs[1];
status = commandArgs[2];
hdnBubbleId.Value = "rptTimeLine_btn" + strMonth + status;
if (status == "B1")
{
status = "1";
}
else if (status == "B2")
{
status = "0";
}
else if (status == "B3")
{
status = "2";
}
}
DataTable dtDistinctCategoryValues = new DataTable();
Params = new Dictionary<string, object>();
Params["#status"] = Convert.ToInt32(status);
Params["#monthShortName"] = strMonth;
Params["#CategoryName"] = strCategory;
Params["#idx_Client"] = Convert.ToInt32(Session["Client_id"]);
string ProcName = "usp_getTaskDetailsByStatusCategoryAndMonth";
dtGetTaskdetails = new BusinessLogicCore().ExecuteDataTable(ProcName, Params, connection);
// to show the detailed view grid only bubble contain more than 1 task
if (dtGetTaskdetails.Rows.Count > 1)
{
/*Commented on 03/15/2016*/
DataView view = new DataView(dtGetTaskdetails);
dtDistinctCategoryValues = view.ToTable(true, "CategoryName");
RepeaterItem rptrow = ((sender as System.Web.UI.WebControls.Button).NamingContainer as RepeaterItem);
Repeater rptDetailsView = (Repeater)rptrow.FindControl("rptMarketingTimeLineDetiledView");
rptDetailsView.DataSource = dtDistinctCategoryValues;
rptDetailsView.DataBind();
ImageButton imgPlus = (ImageButton)rptrow.FindControl("imgPlus");
ImageButton imgMinus = (ImageButton)rptrow.FindControl("imgMinus");
hdnDetailsView.Value = "bubble";
hdnShowTaskDiv.Value = "0";
hdnMonthName.Value = "";
hdnIdx_task.Value = "";
hdnlnkTaskId.Value = "";
// Page.ClientScript.RegisterStartupScript(this.GetType(), "ExpandBubbleGrid", "ExpandDiv('" + imgPlus.ClientID + "', '" + imgMinus.ClientID + "');", true);
}
}
protected void rptMarketingTimeLineMonthDetiledView_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
GridView gridView = (GridView)e.Item.FindControl("GVMarketingTimeLineMonthlyDetiledView");
if (gridView != null)
{
DataRowView dataRowView = (DataRowView)e.Item.DataItem;
gridView.DataSource = GetPolicyDetailsByCategory(Convert.ToString(dataRowView["CategoryName"]));
gridView.DataBind();
}
}
}
Above give is my code behind code.
<asp:Button ID="btnDecB1" runat="server" rel="popover" data- toggle="popover" OnCommand="BubbleButton_Command" OnClientClick="return false;" CommandName="Expand" CommandArgument='<%#Eval("CategoryName")+"^Dec^B1"%>' Style="display: none;" onmouseover="dotBlink(this.id);" onmouseout="removedotBlink(this.id);" />
<div id="myPopover1" class="popover">
<div class="arrow"></div>
<div class="popover-content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
<asp:Repeater ID="rptMarketingTimeLineDetiledView" runat="server" OnItemDataBound="rptMarketingTimeLineDetiledView_ItemDataBound">
<HeaderTemplate>
<table class="tblDetiledView">
</HeaderTemplate>
<ItemTemplate>
<tr style="margin-bottom: 10px; background-color: white;">
<td style="text-align: left;" nowrap="true">
<asp:Label ID="lblCategory" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"CategoryName") %>' CssClass="fontBold" Style="color: #23356E;"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:GridView ID="GVMarketingTimeLineDetiledView" runat="server" AutoGenerateColumns="false" GridLines="None" Style="width: 100%;" HeaderStyle-CssClass="MarketingTimeLineDetailedGridHeaderStyle" OnRowDataBound="RowDataBound" DataKeyNames="idx_task" ToolTip="Select a row to edit task details.">
<AlternatingRowStyle BackColor="#CDE5F5" />
<Columns>
<asp:BoundField DataField="TaskName" HeaderText="Task Name" ItemStyle-Width="20%" HeaderStyle-CssClass="MarketingTimeLineHeader" ItemStyle-CssClass="MarketingTimeLineitem" />
<asp:BoundField DataField="StartDate" HeaderText="Start Date" ItemStyle-Width="12%" HeaderStyle-CssClass="MarketingTimeLineHeader" DataFormatString="{0:MM/dd/yyyy}" ItemStyle-CssClass="MarketingTimeLineitem" />
<asp:BoundField DataField="ClientContacts" HeaderText="Client Contact" ItemStyle-Width="20%" HeaderStyle-CssClass="MarketingTimeLineHeader" ItemStyle-CssClass="MarketingTimeLineitem" />
<asp:BoundField DataField="StatusName" HeaderText="Status" ItemStyle-Width="15%" HeaderStyle-CssClass="MarketingTimeLineHeader" ItemStyle-CssClass="MarketingTimeLineitem" />
</Columns>
</asp:GridView>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</div>
And above one is aspx code
And my javascript code is
$('[rel="popover"]').each(function () {
var $this = $(this);
$this.popover({
offset: 10,
trigger: 'click',
placement: 'right',
html: true,
content: $('#myPopover1').text(),
});
$('#mypopover').click(function () {
$(".popover").popover('hide');
});
});
When I click on the button the page is refreshed and if I give OnClientClick="return false;" it will on go to oncommand function. How can I get the details of repeater and grid view in popup?

Iterate Gridview to find greatest value using Javascript or jQuery

I have a gridview and scenario is: once someone deletes a row, it checks if NOTIF_RECIP_SEQ_NBR is maximum or not. If yes then it deletes that row else give a popup.
So basically once someone click on delete, it gets the NOtif_recip_Id of that row and iterates through Gridview to see if NOTIF_RECIP_SEQ_NBR of any row corresponding to that NOTIF_RECIP_ID is greater or not.
Question is It possible at client side? I did it with server side but I don't think that's a good way when I have all data on client side itself.
Please help. I tried multiple ways with Javascript but no use.
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script type="text/javascript">
function check(var a ,var b)
{
var grid = document.getElementById("GridView1");
var cellPivot;
debugger;
if (grid.rows.length > 0) {
for (i = 1; i < grid.rows.length-1; i++)
{
//here I want code to iterate and compare value.Is it possible?
alert("You must select an answer for all columns if Pivot is yes")
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
<table>
<tr>
<td>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label13" runat="server" Text="Notif_Recip Data" BackColor="Azure"></asp:Label>
<asp:GridView ID="GridView1" runat="server" DataKeyNames="NOTIF_RECIP_GUID" emptydatatext="There are no data records to display."
AutoGenerateColumns = "false" Font-Names = "Arial"
Font-Size = "11pt" AlternatingRowStyle-BackColor="Beige"
HeaderStyle-BackColor = "AppWorkspace"
PageSize = "10" >
<Columns>
<asp:TemplateField ItemStyle-Width = "30px" HeaderText = "NOTIF_RECIP_ID">
<ItemTemplate>
<asp:Label ID="lblNOTIF_RECIP_ID" runat="server"
Text='<%# Eval("NOTIF_RECIP_ID")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtNOTIF_RECIP_ID" runat="server"
Text='<%# Eval("NOTIF_RECIP_ID")%>'></asp:TextBox>
<asp:RequiredFieldValidator ID="v1txtNOTIF_RECIP_ID" runat="server" ControlToValidate="txtNOTIF_RECIP_ID" Text="?" ForeColor="Red" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width = "100px" HeaderText = "NOTIF_RECIP_SEQ_NBR">
<ItemTemplate>
<asp:Label ID="lblNOTIF_RECIP_SEQ_NBR" runat="server"
Text='<%# Eval("NOTIF_RECIP_SEQ_NBR")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkRemove" runat="server"
CommandArgument = '<%# Eval("NOTIF_RECIP_GUID")%>'
OnClientClick = "ValidateGrid"
Text = "Delete" OnClick = <%# "javascript:check('" + Eval("NOTIF_RECIP_SEQ_NBR")" + "Eval("NOTIF_RECIP_ID") + "')" %> ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
<HeaderStyle Font-Bold="True" />
<AlternatingRowStyle BackColor="#C2D69B" />
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID = "GridView1" />
</Triggers>
</asp:UpdatePanel>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
I found the solution so pasting for anyone who in need.
<script type = "text/javascript">
function GetSelectedRow(lnk) {
debugger;
var table, tbody, i, rowLen, row, j, colLen, cell;
var result = confirm('Do you want to delete this value ?');
if (result) {
var x = document.getElementById('Label100');
table = document.getElementById("GridView1");
tbody = table.tBodies[0];
var bool = true;
var row = lnk.parentNode.parentNode;
var rowIndex = row.rowIndex - 1;
var RecipID = row.cells[0].innerText;
var Sqqno = parseInt(row.cells[1].innerText);
for (i = 1, rowLen = tbody.rows.length; i < rowLen; i++) {
row = tbody.rows[i];
var newrecipId = row.cells[0].innerText;
if (newrecipId == RecipID) {
cell = row.cells[1];
var newseq = parseInt(row.cells[1].innerText);
if (Sqqno < newseq) {
// debugger;
bool = false;
x = document.getElementById('Label100');
x.innerHTML = "ERROR-Delete RecipId with max Seqnumber";
x.style.display = "block";
return bool;
break;
}
}
else {
bool = true;
}
}
return bool;
}
else {
return false;
}
}
</script>

Insert data from grid view to sql server

I am doing project on asp.net. Right now I have got problem with insert data from gridview to sql server. In my gridview I have add a template as a textbox in order to input value. My problem is about insert value from textbox of gridview to sql server. My code as below:
<%# Page Title="" Language="C#" MasterPageFile="~/coca.Master" AutoEventWireup="true" CodeBehind="Orders.aspx.cs" Inherits="AssignmentWeb.Orders" %>
<%# Import Namespace="System.Data" %>
<%# Import Namespace="System.Data.SqlClient" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="center">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("[id*=txtQty]").val("0");
});
$("[id*=txtQty]").live("change", function () {
if (isNaN(parseInt($(this).val()))) {
$(this).val('0');
} else {
$(this).val(parseInt($(this).val()).toString());
}
});
$("[id*=txtQty]").live("keyup", function () {
if (!jQuery.trim($(this).val()) == '') {
if (!isNaN(parseFloat($(this).val()))) {
var row = $(this).closest("tr");
$("[id*=lblTotal]", row).html(parseFloat($(".price", row).html()) * parseFloat($(this).val()));
}
} else {
$(this).val('');
}
var grandTotal = 0;
$("[id*=lblTotal]").each(function () {
grandTotal = grandTotal + parseFloat($(this).html());
});
$("[id*=lblGrandTotal]").html(grandTotal.toString());
});
</script>
<br />
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="ProductID" DataSourceID="SqlDataSource1" EnableModelValidation="True">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
<asp:BoundField DataField="AverageProduct" HeaderText="AverageProduct" SortExpression="AverageProduct" ItemStyle-CssClass="price"/>
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:TemplateField HeaderText="QtyOrder">
<ItemTemplate>
<asp:Textbox ID="txtQty" runat="server"></asp:Textbox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total">
<ItemTemplate>
<asp:Label ID="lblTotal" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Grand Total:
<asp:Label ID="lblGrandTotal" runat="server" Text="0"></asp:Label>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:InventoryRouting %>" SelectCommand="SELECT [ProductName], [AverageProduct], [Description], [ProductID] FROM [Product]"></asp:SqlDataSource>
<br />
<asp:Button ID="btnOrder" runat="server" Text="Order!" Width="100px" OnClick="btnOrder_Click"/>
<br />
<br />
</div>
</asp:Content>
<script runat="server">
public void btnOrder_Click(object sender, EventArgs e)
{
int c = 0;
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridViewRow row = GridView1.Rows[i];
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection("Data Source=LIDA-PC; Initial Catalog=InventoryRouting; Integrated Security=True");
//cmd.CommandText = "insert into orders values('" + Session["Username"].ToString() + "',#ProductID, #ProductName, #QtyOrder, #Total)";
cmd.CommandText = "insert into orders values('" + Session["Username"].ToString() + "',#ProductID , #ProductName, #QtyOrder, #Total)";
cmd.Connection .Open();
//cmd.Parameters.AddWithValue("'" + Session["Username"].ToString() + "'", GridView1.Rows[i].Cells[1].Text);
cmd.Parameters.AddWithValue("#ProductID", GridView1.Rows[i].Cells[0].Text);
cmd.Parameters.AddWithValue("#ProductName", GridView1.Rows[i].Cells[1].Text);
cmd.Parameters.AddWithValue("#QtyOrder", GridView1.Rows[i].Cells[4].Text);
cmd.Parameters.AddWithValue("#Total", GridView1.Rows[i].Cells[5].Text);
//InsertCommand = new SqlCommand("INSERT INTO [orders] ([client], [product], [amount], [price]) VALUES ('" + Session["Username"].ToString() + "', #ProductName, #AverageProduct, #QtyOrder, #Total)");
cmd.ExecuteNonQuery();
cmd.Connection.Close();
c = c + 1;
}
}
</script>
You need to convert grid view row cell control to the appropriate control explicitly.
access like this ((Textbox)(GridView1.Rows[i].Cells[4].Controls[0]).Text for your #QtyOrder
and ((Label)(GridView1.Rows[i].Cells[5].Controls[0]).Text for #Total.
OR
(GridView1.Rows[i].FindControl("txtQty") as TextBox).Text
Thanks.

validate dropdown box if checkbox is checked using javascript

My requirement is that if check-box is checked then you have to select something from the dropdown box. I have multiple rows in the gridview so i am only requiring that you have to make a selection from the dropdown if you select the checkbox.
function validateDDL() {
var flag = true;
var dropdowns = new Array(); //Create array to hold all the dropdown lists.
var gridview = document.getElementById('<%=gvSearch.ClientID%>'); //GridView1 is the id of ur gridview.
dropdowns = gridview.getElementsByTagName('Select'); //Get all dropdown lists contained in GridView1.
for (var i = 0; i < dropdowns.length; i++) {
if (dropdowns.item(i).value == 'Select') //If dropdown has no selected value
{
flag = false;
break; //break the loop as there is no need to check further.
}
}
if (!flag) {
dropdowns[i].focus();
alert('Please select a Project Role from the dropdown box. Thanks');
}
return flag;
}
</script>
gridview
<asp:GridView ID="myGridview" runat="server"
AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound"
AllowPaging="true" ShowFooter="True"
OnPageIndexChanging="OnPaging">
<Columns>
<asp:TemplateField HeaderText="ID" Visible="true">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%# Eval("PRJ_ID")%>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="10px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Title" Visible="true">
<ItemTemplate>
<asp:Label ID="lblPrjTit" runat="server" Text='<%# Eval("PRJ_TITLE")%>'></asp:Label>
</ItemTemplate>
<%-- <ItemStyle Width="10px" />--%>
</asp:TemplateField>
<asp:TemplateField HeaderText="Project Role">
<ItemTemplate>
<asp:DropDownList ID="ddlRole" CssClass="form-control" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Check">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" />
</ItemTemplate>
<ItemStyle Width="10px" />
</asp:TemplateField>
</Columns>
</asp:GridView>
i have solved so in case someone might have similar issue
<script type="text/javascript">
function validateDDL() {
//debugger;
var flag = true;
var gridView = document.getElementById('<%= gvSearch.ClientID %>');
for (var i = 1; i < gridView.rows.length; i++) {
var inputs = gridView.rows[i].getElementsByTagName('input');
var dropdowns = gridView.rows[i].getElementsByTagName('Select');
if (inputs != null && inputs.length >= 1 && inputs[0] != null && dropdowns != null && dropdowns.length >= 1 && dropdowns[0] != null) {
if (dropdowns[0].type == "select-one" && inputs[0].type == "checkbox") {
var ddlSelectedItem = dropdowns[0].value;
// if (inputs[0].checked && (ddlSelectedItem == "Select" || txtval == null)) {
if (inputs[0].checked && ddlSelectedItem == "Select" ) {
flag = false;
break;
}
else {
flag = true;
}
}
}
}
if (!flag) {
alert('your message alert here');
}
return flag;
}
</script>

Categories

Resources