Exclude headers for ItemStyle- Width for gridview? - c#

I´m trying to play around ItemStyle- Width and but this only works if i use Attribites.Add("Style"...) in my page load.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
...
}
gwActivity.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
}
However this is not a problem. My issue is that the column headers are affected in the ItemStyle-Width:... and i do NOT want that to be the case. Can i only play around with the rows and not the headers?
<%--************************ Gridview section ************************--%>
<asp:GridView ID="gwActivity" runat="server" AutoGenerateColumns="False" OnRowCommand="gwActivity_RowCommand" CssClass="gwActivity" >
<Columns>
<asp:BoundField DataField="ActivityID" HeaderText="ActivitID"></asp:BoundField>
</Columns>
<HeaderStyle BackColor="#E6E6E6" Font-Bold="false" Font-Names="Arial" ForeColor="#000000" />
<%-- <AlternatingRowStyle BackColor="#E6E6E6" /> --%>
</asp:GridView>

try this..
<asp:GridView ID="gwActivity" runat="server"
AutoGenerateColumns="False" OnRowCommand="gwActivity_RowCommand"
CssClass="gwActivity" >
<HeaderStyle BackColor="#E6E6E6" Font-Bold="false" ForeColor="#000000" Font-Names="Arial />
<Columns>
<asp:BoundField DataField="ActivityID" HeaderText="ActivitID"></asp:BoundField>
<asp:BoundField DataField="ActivityID" HeaderText="ActivitID" HeaderStyle-Font-Bold="false"
HeaderStyle-Font-Size="12px" ItemStyle-HorizontalAlign="Left" ItemStyle-Width="25">
<HeaderStyle Font-Bold="False" Font-Size="12px" />
<ItemStyle Font-Size="12px" HorizontalAlign="Left" Width="200px" /> //set width you want..
</asp:BoundField>
</Columns>
</asp:GridView>

Related

Asp Gridview Edit columns issue : Checkbox does not update columns

I am fairly new to Asp.Net. I have been trying to Edit a column value in a gridview but upon checking one of the two checkboxes (Yes or No), it does not update anything.
Sharing Gridview code below :
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#000000" BorderStyle="Solid"
BorderWidth="2px" CellPadding="6" DataKeyNames="film_data" DataSourceID="SqlDataSource" ForeColor="White"
GridLines="Vertical" onrowdatabound="GridView1_RowDataBound" AllowSorting="True">
<AlternatingRowStyle BackColor="#CCCCC" />
<Columns>
<asp:CommandField ShowEditButton="True">
<ControlStyle ForeColor="Blue" />
</asp:CommandField>
<asp:BoundField DataField="film_title" HeaderText="MOVIE TITLE" ReadOnly="True" SortExpression="film_title" >
<HeaderStyle Wrap="False" />
<ItemStyle Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="film_release" HeaderText="RELEASE DATE" ReadOnly="True" SortExpression="release_date" >
<HeaderStyle Wrap="False" />
<ItemStyle Wrap="False" />
</asp:BoundField>
<asp:CheckboxField DataField="Yes" HeaderText="YES" SortExpression="Yes" />
<asp:CheckboxField DataField="No" HeaderText="NO" SortExpression="No" />
</Columns>
<FooterStyle BackColor="#CCCCCC" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<RowStyle />
</asp:GridView>
This is the GridView1_RowDataBound snippet from .cs file.
public void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Checking the RowType of the Row
if (e.Row.RowType == DataControlRowType.DataRow)
{
....
What am I missing here ? Upon clicking Edit, and the Yes or No checkboxes. nothing gets updated. There is no error either. Kindly assist.
In Gridview change the commandfield and checkbox control like this in your code
<asp:TemplateField HeaderText="Yes/No">
<ItemTemplate>
<asp:Literal ID="ltrchkboxVal" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "chkboxval").ToString() %>'></asp:Literal>
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="hdnchkboxval" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "chkboxval").ToString() %>'/>
<asp:CheckboxList ID="chkyesboxval" runat="server" Width="40">
<asp:ListItem> Yes</asp:ListItem>
<asp:ListItem> No</asp:ListItem>
</asp:CheckboxList >
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Button" CancelText="Cancel" ControlStyle-CssClass="small"
EditText="Optimise" HeaderText="Optimise" ShowEditButton="true" UpdateText="Apply" ItemStyle-Width="30px">
</asp:CommandField>
IN c# code
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
DivMessage.Visible = false;
GridView1.EditIndex = e.NewEditIndex;
//Bind gridview
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string yesnoval = (GridView1.Rows[e.RowIndex].FindControl("chkyesboxval") as CheckBoxList).SelectedItem.Value;
// update new values and Bind gridview
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
//Bind gridview
}
Add events for the gridview control
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating"

C# GridView get textbox input

I have a problem that is most likely easy but I'm missing something small.
I have looked at numerous entries on Stack Overflow with the same question but I must be doing something wrong.
I am trying to get the value of a textbox in a GridView after typing into it. I want to take that value and update a SQL field.
Here is my GridView:
<asp:GridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="SALESID" HeaderStyle-HorizontalAlign="CENTER" HorizontalAlign="CENTER" CellPadding="4" ForeColor="#333333" GridLines="Both" AllowSorting="true" AllowPaging="true" PageSize="100" OnRowDataBound="ASPxGridView1_RowDataBound" OnSorting="ASPxGridView1_Sorting" OnRowUpdating="ASPxGridView1_RowUpdating">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<%-- 0 This is e.Row.Cells[0].Text --%>
<asp:BoundField DataField="SALESID" HeaderText="SALES ORDER" SortExpression="SALESID" HeaderStyle-CssClass="padLeft" HeaderStyle-Width="125" ItemStyle-Width="115">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<%-- 1 --%>
<asp:BoundField DataField="ITEMID" HeaderText="PART NUMBER" HeaderStyle-HorizontalAlign="Center" SortExpression="ITEMID" ItemStyle-Width="150" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<%-- 2 --%>
<asp:BoundField DataField="NAME" HeaderText="PART NAME" HeaderStyle-HorizontalAlign="Center" SortExpression="NAME" ItemStyle-Width="320">
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<%-- 3 --%>
<asp:BoundField DataField="CUSTACCOUNT" HeaderText="ACC" HeaderStyle-HorizontalAlign="Center" SortExpression="CUSTACCOUNT">
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<%-- 4 --%>
<asp:BoundField DataField="SALESNAME" HeaderText="CUSTOMER" HeaderStyle-HorizontalAlign="Center" SortExpression="SALESNAME" ItemStyle-Width="350" >
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<%-- 5 --%>
<asp:BoundField DataField="SHIPPINGDATECONFIRMED" HeaderText="SHIPPING DATE" HeaderStyle-HorizontalAlign="Center" SortExpression="SHIPPINGDATECONFIRMED" ItemStyle-Width="100" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<%-- 6 --%>
<asp:BoundField DataField="QTYORDERED" HeaderText="QTY ORDERED" HeaderStyle-HorizontalAlign="Center" SortExpression="QTYORDERED" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<%-- 7 --%>
<asp:BoundField DataField="REMAINSALESPHYSICAL" HeaderText="QUANTITY REMAINED" HeaderStyle-HorizontalAlign="Center" SortExpression="REMAINSALESPHYSICAL" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<%-- 8 --%>
<asp:BoundField DataField="AVAILPHYSICAL" HeaderText="AVAIL PHYSICAL" HeaderStyle-HorizontalAlign="Center" SortExpression="AVAILPHYSICAL" ItemStyle-Width="80" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<%-- 9 --%>
<asp:HyperLinkField DataTextField="WMSLOCATIONID" HeaderText="LOCATION" HeaderStyle-HorizontalAlign="Center" DataNavigateURLFields="ITEMID" DataNavigateURLFormatString="~\Location.aspx?ITEMID={0}" Target="_blank" SortExpression="WMSLOCATIONID">
<ItemStyle HorizontalAlign="Center" />
</asp:HyperLinkField>
<%-- 10 --%>
<asp:HyperLinkField DataTextField="INPROCESS" HeaderText="IN PROCESS" HeaderStyle-HorizontalAlign="Center" DataNavigateUrlFields="ITEMID" DataNavigateUrlFormatString="~\InProcess.aspx?ITEMID={0}" Target="_blank" SortExpression="INPROCESS">
<ItemStyle HorizontalAlign="Left" />
</asp:HyperLinkField>
<%-- 11 --%>
<asp:BoundField DataField="PRD" HeaderText="PRD" HeaderStyle-HorizontalAlign="Center" SortExpression="PRD" ItemStyle-Width="135">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<%-- 12 --%>
<asp:TemplateField HeaderText="SHIPTODAY" ItemStyle-Width="90">
<ItemTemplate>
<asp:TextBox ID="SHIPTODAY" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<%-- 13 --%>
<asp:TemplateField HeaderText="NOTES" >
<ItemTemplate>
<asp:TextBox ID="NOTES" runat="server" TextMode="MultiLine"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" HeaderText="" CommandName="Update" Text="Update" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#284775" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="False" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
Here is my gridview _RowUpdating method:
protected void ASPxGridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Debug.WriteLine("row updating");
int index = Convert.ToInt32(e.RowIndex);
Debug.WriteLine("Index: " + index);
GridViewRow selectedRow = ASPxGridView1.Rows[index];
TableCell itemIDSelected = selectedRow.Cells[1];
TableCell rowPRD = selectedRow.Cells[11];
TableCell rowShipToday = selectedRow.Cells[12];
TableCell rowNotes = selectedRow.Cells[13];
string itemIdSelectedText = itemIDSelected.Text;
string rowPRDSelected = rowPRD.Text;
string rowShipTodaySelected = rowShipToday.Text;
string test = ((TextBox)selectedRow.FindControl("NOTES")).Text;
string test1 = ((TextBox)ASPxGridView1.Rows[index].FindControl("NOTES")).Text;
TextBox test2 = ASPxGridView1.Rows[index].FindControl("NOTES") as TextBox;
string test2text = test2.Text;
//string rowNotesSelected = rowNotes.Text;
//Debug.WriteLine(itemIdSelectedText);
//Debug.WriteLine(itemIdSelectedText);
//Debug.WriteLine(rowPRDSelected);
//Debug.WriteLine(rowShipTodaySelected);
Debug.WriteLine(test1);
Debug.WriteLine(test);
Debug.WriteLine(test2text);
//Debug.WriteLine(selectedRow.Cells[0].Text);
//Debug.WriteLine(selectedRow.Cells[1].Text);
//Debug.WriteLine(selectedRow.Cells[2].Text);
//Debug.WriteLine(selectedRow.Cells[3].Text);
//Debug.WriteLine(selectedRow.Cells[4].Text);
//Debug.WriteLine(selectedRow.Cells[5].Text);
//Debug.WriteLine(selectedRow.Cells[6].Text);
//Debug.WriteLine(selectedRow.Cells[7].Text);
//Debug.WriteLine(selectedRow.Cells[8].Text);
//Debug.WriteLine(selectedRow.Cells[9].Text);
//Debug.WriteLine(selectedRow.Cells[10].Text);
Debug.WriteLine(selectedRow.Cells[11].Text);
//Debug.WriteLine(selectedRow.Cells[12].Text);
//Debug.WriteLine(selectedRow.Cells[13].Text);
Debug.WriteLine("-----------");
//Debug.WriteLine(rowShipTodaySelected);
//Debug.WriteLine(rowNotesSelected);
}
When I run this and I type something in, the debug writeline's show.
I know i'm on the correct line because the index is correct per the line I am clicking the Update button on.
Sample debug output from above looks like this:
row updating
Index: 5
D31948P01
PRD-00030521
PRD-00030521
I cannot seem to get the value of the NOTES TextBox field.
As you can see with my testing I've tried using a FindControl and I've tried having it as a TextBox and also trying to get it directly to a string.
I've set breakpoints and each time I do it the test variable is null.
I'm missing something and I do not know what.
To summarize:
On non-text fields I can pull the data from the field.
On TextBox fields I cannot even using the FindControl method.
What I want to do:
Get the TextBox field value in the GridView so I can update the database.
StackOverflow links I've tried before asking this question:
c# Get value (text) of a bound textbox in a gridview
How to get value of TextBox of GridView in C#?
Manipulate textbox on gridview C#
Get TextBox value from GridView cell
ASP.net C# Gridview ButtonField onclick event
Thanks in advance. I've spent over 6 hours of attempting this without results. I don't understand it well enough yet. If there are any tutorials or videos explaining GridView's please let me know what they are so I can understand better.
The reason why RowUpdating method cannot find the text inside the textbox is most likely because of the postback. Clicking update button causes a post back to server. Before ASPxGridView1_RowUpdating is called, there is an a call to re-build the gridview ie.: ASPxGridView1.DataBind(). To avoid this, wrap the databind in an if (!Page.IsPostBack)
Below is a basic working example
<asp:GridView ID="ASPxGridView1"
runat="server"
AutoGenerateColumns="False"
OnRowUpdating="ASPxGridView1_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="NOTES" >
<ItemTemplate>
<asp:TextBox ID="NOTES" runat="server" TextMode="MultiLine"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" HeaderText="" CommandName="Update" Text="Update" />
</Columns>
</asp:GridView>
Code behind:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// This code will not be reached if you click update button.
var data = new string[] { "a", "b", "c" };
ASPxGridView1.DataSource = data;
ASPxGridView1.DataBind();
}
}
protected void ASPxGridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int index = Convert.ToInt32(e.RowIndex);
GridViewRow selectedRow = ASPxGridView1.Rows[index];
TextBox txtNotes = (TextBox)selectedRow.FindControl("NOTES");
Debug.WriteLine(txtNotes.Text);
}

Reading bounded DataItem expression text from control inside template field

I have a custom gridview and I use that grid in too many pages and I want to set the SortExpression text for all columns inside that grid in code behained ; as you see in the following code I have do that by overriding the OnRowDataBound eventhandler .
The problem is I can't access the evaluated datafield expression text ("START_WORK_DATE" in my case) for template Fields like what I did in BoundField
<eska:GridView ID="gvEmployees" runat="server" CssClass="new-grid" PageSize="20"
AllowSorting="true" AllowPaging="True"
AutoGenerateColumns="False" Width="100%"
GridContainer="tdEmployees" DataKeyNames="ID"
RowHoverCssClass="HoverRow" ShowCheckBox="True"
OnPageIndexChanging="gvEmployees_PageIndexChanging"
OnSelectedIndexChanged="gvEmployees_SelectedIndexChanged"
meta:resourcekey="gvEmployeesResource1">
<PagerSettings FirstPageImageUrl="~/App_Themes/Images/First.gif" LastPageImageUrl="~/App_Themes/Images/last.gif"
Mode="NextPreviousFirstLast" NextPageImageUrl="~/App_Themes/Images/Next.gif"
PreviousPageImageUrl="~/App_Themes/Images/prev.gif"></PagerSettings>
<SelectedRowStyle CssClass="SelectedRow"></SelectedRowStyle>
<Columns>
<asp:BoundField meta:resourcekey="BoundFieldResource1">
<ItemStyle Width="2%" />
<HeaderStyle Width="2%" />
<FooterStyle Width="2%" />
</asp:BoundField>
<asp:BoundField DataField="EMP_NO" HeaderText="Employee No"
meta:resourcekey="BoundFieldResource3">
<HeaderStyle Width="10%"></HeaderStyle>
<ItemStyle Width="10%"></ItemStyle>
<FooterStyle Width="10%" />
</asp:BoundField>
<asp:BoundField DataField="NAME" HeaderText="Name" meta:resourcekey="BoundFieldResource4">
<HeaderStyle Width="34%"></HeaderStyle>
<ItemStyle Width="34%"></ItemStyle>
<FooterStyle Width="34%" />
</asp:BoundField>
<asp:TemplateField HeaderText="Hiring Date" meta:resourcekey="TemplateFieldResource1">
<ItemTemplate>
<asp:Label runat="server"Text='<%# Convert.ToDateTime(DataBinder.Eval(Container,
"DataItem.START_WORK_DATE")).ToString("dd-MM-yyyy") %>'
ID="lblHiringDateGrid"></asp:Label>
</ItemTemplate>
<HeaderStyle Width="10%"></HeaderStyle>
<ItemStyle Width="10%"></ItemStyle>
<FooterStyle Width="10%" />
</asp:TemplateField>
<asp:BoundField DataField="PHONE1" HeaderText="Phone 1"
meta:resourcekey="BoundFieldResource5">
<HeaderStyle Width="10%"></HeaderStyle>
<ItemStyle Width="10%"></ItemStyle>
<FooterStyle Width="10%" />
</asp:BoundField>
<asp:BoundField DataField="Position_Name" HeaderText="Position"
meta:resourcekey="BoundFieldResource6">
<HeaderStyle Width="20%"></HeaderStyle>
<ItemStyle Width="20%"></ItemStyle>
<FooterStyle Width="20%" />
</asp:BoundField>
<asp:BoundField DataField="STATUS_DESC" HeaderText="Status"
meta:resourcekey="BoundFieldResource7">
<HeaderStyle Width="12%"></HeaderStyle>
<ItemStyle Width="12%"></ItemStyle>
<FooterStyle Width="12%" />
</asp:BoundField>
<asp:BoundField meta:resourcekey="BoundFieldResource8">
<ItemStyle Width="2%" />
<HeaderStyle Width="2%" />
<FooterStyle Width="2%" />
</asp:BoundField>
</Columns>
</eska:GridView>
Code behind:
protected override void OnRowDataBound(GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
for (int i = 0; i < this.Columns.Count; i++)
{
if (this.Columns[i] is BoundField)
{
if (((BoundField)(this.Columns[i])).DataField != string.Empty)
{
this.Columns[i].SortExpression = ((BoundField)(this.Columns[i])).DataField;
}
}
else if (this.Columns[i] is TemplateField)
{
// ???
}
}
}
}
You can do some thing like this. Set a header template with link button.
<asp:TemplateField>
<HeaderTemplate>
<asp:LinkButton ID="LinkButtonEmpName" runat="server" Text="Employee Name" CommandName="Sort" CommandArgument="Employees">
</asp:LinkButton>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="LabelEmployee" runat="server" Text='<%# Bind("Employees") %>'/>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="TextBoxEmployee" runat="server"/>
</FooterTemplate>
And in row command event find command like this.
protected void grd_RowCommand(object sender, GridViewCommandEventArgs e){
if (e.CommandName.Equals("Sort"))
{
FilterExpression = e.CommandArgument.ToString() + " LIKE '%" + txtCaseNumber.Text + "%'";
BindGridView();
}}
See the complete example here.
http://www.codeproject.com/Questions/528664/HowplustoplusapplyplussortingplusinplusTemplateplu

Create a dynamic column in gridview while page upload

I want to add a column to my gridview while page is uploading.
My gridview takes his data from SQL static tables... and I want to add a column which contains the number of the row (1,2,3...)
Part of my gridview:
<asp:GridView ID="GridView1" runat="server" HorizontalAlign="Center"
AutoGenerateColumns="False" DataKeyNames="InjuryScenario_id"
DataSourceID="SqlDataSource30"
OnSelectedIndexChanged="GridView1_OnSelectedIndex" ShowHeaderWhenEmpty="True"
CellPadding="3" GridLines="None" BackColor="White" BorderColor="White"
BorderStyle="Ridge" BorderWidth="2px" CellSpacing="1">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="InjuryScenario_id" HeaderText="מספר תרחיש" ReadOnly="True" SortExpression="InjuryScenario_id" />
<asp:BoundField DataField="Cause_name" HeaderText="מנגנון" SortExpression="Cause_name" />
<asp:BoundField DataField="City_name" HeaderText="יישוב" SortExpression="City_name" />
<asp:BoundField DataField="Place_name" HeaderText="מקום" SortExpression="Place_name" />
<asp:BoundField DataField="InjuryDay" HeaderText="יום" SortExpression="InjuryDay" Visible="False"/>
<asp:BoundField DataField="InjuryMonth" HeaderText="חודש" SortExpression="InjuryMonth" Visible="False"/>
<asp:BoundField DataField="InjuryYear" HeaderText="שנה" SortExpression="InjuryYear" Visible="False"/>
<asp:TemplateField HeaderText="תאריך">
<ItemTemplate>
<asp:Label ID="Label1" runat="server"><%#(int)Eval("InjuryDay")+"/"+ Eval("InjuryMonth")+"/"+ Eval("InjuryYear") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
I've tried to use this method:
protected void Btn_AddCol_Click(object sender, EventArgs e)
{
TemplateField tf = new TemplateField();
tf.HeaderTemplate = new GridViewLabelTemplate(DataControlRowType.Header, "Col1", "Int32");
tf.ItemTemplate = new GridViewLabelTemplate(DataControlRowType.DataRow, "Col1", "Int32");
GridView1.Columns.Add(tf);
}
Thanks

jquery datepicker date not binding to asp.net textbox in gridview editing/updating (with masterpage)

in the code below, the string sFoodFormReceived1 always gets the value of DateTime.Now. I dont know how to make the date clicked on the datepicker UI bind to the textbox in the gridview gvReservationsWithForms.
protected void gvReservationsWithForms_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = gvReservationsWithForms.Rows[e.RowIndex];
string sFoodFormReceived1 = ((TextBox)(row.Cells[9].Controls[1])).Text;
DataTable dt = dsReservationsToBind.Tables[0];
dt.Rows[gvReservationsWithForms.EditIndex]["FoodFormReceived"] = new DateTime(System.DateTime.Parse(sFoodFormReceived1));
DataRow dr = dt.Rows[row.DataItemIndex];
var Reservation = new reservation_RoomReservationTableAdapter();
Reservation.Update(dr);
gvReservationsWithForms.EditIndex = -1;
gvReservationsWithForms.DataBind();
}
<asp:Content ID="Content4" ContentPlaceHolderID="Main" Runat="Server">
<script type="text/javascript">
$(document).ready(function ()
{$("input[id$='tbFoodFormReceivedEditItemTemplate']").datepicker();})
</script>
<asp:GridView ID="gvReservationsWithForms" runat="server"
AutoGenerateColumns="False"
DataKeyNames="RoomReservationID" AutoGenerateSelectButton="True"
allowsorting ="True" AutoGenerateEditButton="True" BackColor="White"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3"
GridLines="Vertical" onsorting="gvReservationsWithForms_Sorting1"
onrowcancelingedit="gvReservationsWithForms_RowCancelingEdit"
onrowediting="gvReservationsWithForms_RowEditing"
onrowupdating="gvReservationsWithForms_RowUpdating"
onselectedindexchanged="gvReservationsWithForms_SelectedIndexChanged1"
onrowupdated="gvReservationsWithForms_RowUpdated">
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<columns>
<asp:BoundField DataField="RoomReservationID" HeaderText="Confirmation ID" SortExpression="RoomReservationID" Visible="false" />
<asp:BoundField DataField="Room" HeaderText="Room" SortExpression="Room" ReadOnly="true"/>
<asp:BoundField DataField="BeginDate" HeaderText="Event Begin Date" SortExpression="BeginDate" ReadOnly="true"/>
<asp:BoundField DataField="EndDate" HeaderText="Event End Date" SortExpression="EndDate" ReadOnly="true"/>
<asp:BoundField DataField="BeginTime" HeaderText="Event Begin Time" SortExpression="BeginTime" ReadOnly="true"/>
<asp:BoundField DataField="EndTime" HeaderText="Event End Time" SortExpression="EndTime" ReadOnly="true"/>
<asp:BoundField DataField="Department" HeaderText="Department/Organization" SortExpression="Department" ReadOnly="true"/>
<asp:BoundField DataField="Activity" HeaderText="Activity" SortExpression="Activity" ReadOnly="true"/>
<asp:TemplateField HeaderText="Food Form Received"
SortExpression="FoodFormReceived">
<EditItemTemplate>
<asp:TextBox ID="tbFoodFormReceivedEditItemTemplate" runat="server" CssClass="datepickers"
Text='<%# DateTime.Now%>'> </asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("FoodFormReceived") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</columns>
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#DCDCDC" />
</asp:GridView>
</asp:Content>
You may want to instead set the textbox to datetime.now in code, on RowEditing instead. That way, the binding doesn't interfere. It could be that...
also, you may get better performance if you do:
$("#<%= gvReservationsWithForms.ClientID %>")
.find("input[id$='tbFoodFormReceivedEditItemTemplate']").datepicker();
Instead, so you restrict the input controls to just the gridview, and not the entire page.

Categories