gridview problem - c#

i have a problem with my gridview contains a textbox to set a date.
<asp:gridview ID="Gridview1" runat="server" AllowPaging="True"
AutoGenerateColumns="False"
DataSourceID="AccessDataSource1" CellPadding="8" ForeColor="#333333"
GridLines="None" CellSpacing="5" Height="361px" Width="748px">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="nome" HeaderText="Nome Utente"
SortExpression="nome" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="titolo" HeaderText="Titolo Libro"
SortExpression="titolo" >
<ItemStyle HorizontalAlign="Center" /></asp:BoundField>
<asp:BoundField DataField="Expr1" HeaderText="Data Restituzione Prevista"
ReadOnly="True" SortExpression="Expr1" >
<ItemStyle HorizontalAlign="Center" /></asp:BoundField>
<asp:TemplateField
HeaderText="Data Restituzione" SortExpression="Expr2">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Expr2") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Expr2") %>'
AutoPostBack="True" ontextchanged="TextBox1_TextChanged"></asp:TextBox>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</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>
And it is my asp.cs file:
namespace Utenti_Biblio
{
public partial class prestiti : System.Web.UI.Page
{
bool changed = false;
protected void Page_Load(object sender, EventArgs e)
{
selectRow();
}
public void selectRow()
{
foreach (GridViewRow row in this.Gridview1.Rows)
{
TextBox textBox = (TextBox)row.Cells[3].FindControl("TextBox1");
string a = textBox.Text;
if (a != "")
{
row.Cells[3].FindControl("TextBox1").Visible = false;
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("Default.aspx");
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
changed = true;
}
// salva
protected void Button1_Click(object sender, EventArgs e)
{
if (changed)
{
foreach (GridViewRow row in this.Gridview1.Rows)
{
TextBox textBox = (TextBox)row.Cells[3].FindControl("TextBox1");
string qry = "UPDATE b_prestiti SET data_restituzione ='" + textBox.Text + "' WHERE id_utente = '" + row.Cells[1].ToString() + "'";
OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
OleDbCommand cmd = conn.CreateCommand();
OleDbDataReader reader = null;
conn.Open();
cmd.CommandText = qry;
reader = cmd.ExecuteReader();
ClientScript.RegisterStartupScript(this.GetType(), "conferma", "alert('Data Restituzione inserita!');window.location='Default.aspx';", true);
reader.Close();
conn.Close();
}
}
}
}
}
How i do to update the database when i set the date into my textbox?
The query string is not correct. Thanks!

Instead of the ExecuteReader() use ExecuteNonQuery(), that might do the trick.

GxG is right. ExecuteReader() is use to fetch the single record(Column) while to DML(Data Manipulation Language, like INSERT,DELETE,UPDATE) we use ExecuteNonQuery().

Related

How can remove/replace substring from GridView Column?

I have below GridView:
I want to remove 0:00:00 from date column, if exists. I change dataformatstring but that remove 9:09:15 too.
I use auto-generate fields and DataBind on .cs file.
I tried Replace, but does not work:
e.Row.Cells[0].Text = e.Row.Cells[0].Text.Replace("0:00:00"," ");
How can I do that?
Gridview:
<asp:GridView ID="GridView4" runat="server" BackColor="White"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3"
GridLines="Vertical" Width="98%"
Height="100%" onrowdatabound="GridView4_RowDataBound" RowStyle-HorizontalAlign="Center" >
<AlternatingRowStyle BackColor="#DCDCDC" />
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#0000A9" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#000065" />
</asp:GridView>
Code:
protected void Page_Load(object sender, EventArgs e)
{
try
{
OleDbConnection Connection6;
using (Connection6 = new OleDbConnection("Provider=MSDAORA.1;Data Source=XXXXXX:1521/orcl;Persist Security Info=True;Password=XXXXXXX;User ID=XXXXXX;"))
{
string sqlQuery = "select * from db.user";
using (OleDbDataAdapter cmd = new OleDbDataAdapter(sqlQuery, Connection6))
{
Connection6.Open();
DataTable dt = new DataTable();
cmd.Fill(dt);
GridView4.DataSource = dt;
GridView4.DataBind();
Connection6.Close();
}
}
}
catch (Exception)
{
}
}
You can use RowDataBound event, then label control using findcontrol
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="lblDate" Text='<%# Eval("Date") %>' runat="server"></asp:Label>
.....
</Columns>
</asp:GridView>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var lbl = e.Row.FindControl("lblDate") as Label;
lbl.Text = lbl.Text.Replace("0:00:00", "");
}
}
If you don't have Template Field and using Bound Field then Use
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if(e.Row.Cells[0].Text.Contains("0:00:00"))
e.Row.Cells[0].Text = e.Row.Cells[0].Text.Replace("0:00:00", "");
}
}

GridView Order of Operations

No error as such, but the way I have it setup, the GridView renders on Page_Load, it would seem that then the rest of operations that I have setup don't seem to fire.
Any ideas on the order? Been at it for hours now :(
<asp:GridView ID="GridView1" runat="server" ShowHeaderWhenEmpty="True" EmptyDataText="No Records Found" AutoGenerateColumns="False" DataSourceID="showOrders" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" Height="74px" Width="394px">
<Columns>
<asp:TemplateField HeaderText ="Pizza Type" SortExpression="pizza_id">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Bind("pizza_id") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="mylabel" runat="server" Text='<%#Bind("pizza_id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="quantity" HeaderText="Quanity" SortExpression="quantity" />
<asp:BoundField DataField="pizza_size" HeaderText="Pizza Size" SortExpression="pizza_size" />
</Columns>
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>
<asp:SqlDataSource ID="showOrders" runat="server" ConnectionString="<%$ ConnectionStrings:Database %>"></asp:SqlDataSource>
Code Behind:
public partial class order_details : System.Web.UI.Page
{
string strConnString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
string username = User.Identity.Name;
showOrders.SelectParameters.Add("username", username);
showOrders.SelectCommand = "SELECT [pizza_id], [quantity], [pizza_size] FROM [orders] WHERE ([username]=#username)";
}
protected void GridView1_Databound(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
row.Visible = row.RowIndex.Equals(1);
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
string value = e.Row.Cells[7].Text;
Label myLabel = (Label) e.Row.FindControl("myLabel");
if (value == "1")
{
myLabel.Text = "Big Cheese";
}
else if (value == "2")
{
myLabel.Text = "BBQ Beef";
}
else if (value == "3")
{
myLabel.Text = "Chicken and Pineapple";
}
else if (value == "4")
{
myLabel.Text = "Pepperoni Feast";
}
else if (value == "5")
{
myLabel.Text = "Vegetarian";
}
}
Any help would be appreciated.
Thanks Kindly.
You need to wire up the offending events:
<asp:GridView ID="GridView1" runat="server"
ShowHeaderWhenEmpty="True"
EmptyDataText="No Records Found"
AutoGenerateColumns="False"
DataSourceID="showOrders"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
BackColor="#DEBA84"
BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
CellPadding="3" CellSpacing="2"
Height="74px" Width="394px"
OnRowDataBound="GridView1_RowDataBound"
OnDataBound="GridView1_Databound">

Gridview linkbutton postbackurl change on page load event

I have a gridview with a linkbutton, the url linkbutton is assigned using a code by replacing a key word with a name from the DB.
all works fine, except that when I click the back button in browser and try different link I get this error:
"The HTTP verb POST used to access path '/System.Web.UI.WebControls.Label' is not allowed"
below is my code:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
GridView1.DataSourceID = "SqlDataSource1";
GridView1.DataBind();
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
var HyperLink = row.FindControl("LinkButton1") as LinkButton;
var RepID = row.FindControl("Label1") as Label;
if (RepID != null)
{
StringBuilder lnk = new StringBuilder("http://bhvwtwbis2/Ops/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/Ops/GAPPBASE/Reports/kai.rdl&Source=http%3A%2F%2Fbhvwtwbis2%2FOps%2FGAPPBASE%2FForms%2FAllItems%2Easpx%3FRootFolder%3D%252FOps%252FGAPPBASE%252FReports%26FolderCTID%3D0x012000D833091DB062524DA7A0550847E4E075%26View%3D%7B8A039A42%2D111E%2D40C4%2D8489%2D0D7F32CEAF36%7D&DefaultItemOpen=1");
lnk.Replace("kai", RepID.Text + "x1");
HyperLink.PostBackUrl = lnk.ToString();
}
}
}
}
}
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="report_id" DataSourceID="SqlDataSource1" BackColor="White"
BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4"
ForeColor="Black" GridLines="Horizontal">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("report_name")%>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="center"
VerticalAlign="Middle" />
<ItemStyle CssClass="link3" HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("report_subject")%>'></asp:LinkButton>
</ItemTemplate>
<HeaderStyle HorizontalAlign="center"
VerticalAlign="Middle" />
<ItemStyle CssClass="link3" HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#CCCC99" ForeColor="Black" />
<HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#4B4B4B" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#242121" />
</asp:GridView>
I think the problem might be that you're doing your binding at the Page_Load stage of the page life cycle. Try moving your foreach code to a
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var HyperLink = e.Row.FindControl("LinkButton1") as LinkButton;
//var RepID = row.FindControl("Label1") as Label;
//You should be able to access your field without referencing the label too
DataRow row = ((DataRowView)e.Row.DataItem).Row;
var myField = row.Field<string>("report_name");
if (RepID != null)
{
StringBuilder lnk = new StringBuilder("http://bhvwtwbis2/Ops/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/Ops/GAPPBASE/Reports/kai.rdl&Source=http%3A%2F%2Fbhvwtwbis2%2FOps%2FGAPPBASE%2FForms%2FAllItems%2Easpx%3FRootFolder%3D%252FOps%252FGAPPBASE%252FReports%26FolderCTID%3D0x012000D833091DB062524DA7A0550847E4E075%26View%3D%7B8A039A42%2D111E%2D40C4%2D8489%2D0D7F32CEAF36%7D&DefaultItemOpen=1");
lnk.Replace("kai", myField + "x1");
HyperLink.PostBackUrl = lnk.ToString();
}
}
}

Filtered Gridview does edit correct row

I have a gridview that works fine with SQLDataSource. Edit, Delete buttons works perfectly.
However, when I search any record and try to edit that record, the gridview opens up the first row in the edit mode.
I don't know what i have done wrong.
Here is my code
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Customer_id"
DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display." AllowPaging="True"
AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="Horizontal"
PageSize="5" Width="873px" onrowediting="GridView1_RowEditing" >
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:TemplateField>
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True"
CommandName="Update" Text="Update"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Edit" Text="Edit" ></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Select" Text="Select"></asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False"
CommandName="Delete" Text="Delete"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Customer_id" HeaderText="Customer_id" ReadOnly="True"
SortExpression="Customer_id" InsertVisible="False" />
<asp:BoundField DataField="Customer_Name" HeaderText="Customer_Name"
SortExpression="Customer_Name" />
<asp:BoundField DataField="Customer_Type" HeaderText="Customer_Type" SortExpression="Customer_Type" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center"
Font-Bold="True" Font-Italic="True" Font-Overline="True" Font-Size="Large" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
And the Code Behind looks like this:
protected void Page_Load(object sender, EventArgs e)
{
string vs = (string)ViewState["buttonClicked"];
string isEditing = (string)ViewState["isEditing"];
if (IsPostBack)
{
if (vs == "False")
{
RadioButtonListChanged();
GridView1.DataBind();
}
else if (vs == "True")
{
btnSearch_Click(sender, e);
GridView1.DataBind();
}
}
}
protected void RadioButton1_SelectedIndexChanged(object sender, EventArgs e)
{
RadioButtonListChanged();
}
private void RadioButtonListChanged()
{
ViewState["buttonClicked"] = "False";
string sqlString;
if (RadioButton1.SelectedItem.Text != "All")
{
sqlString = "Select * from customers where status='True' and customer_type = '" + RadioButton1.SelectedValue.ToString() + "' order by customer_name";
}
else
{
sqlString = "Select * from customers where status='True' order by customer_name";
}
SqlDataSource1.SelectCommand = sqlString;
SqlDataSource1.DataBind();
}
protected void btnSearch_Click(object sender, EventArgs e)
{
ViewState["buttonClicked"] = "True";
string sqlString;
sqlString = "Select * from customers where status='True' and customer_name like '%" + txtCustomerName.Text + "%' order by customer_type, customer_name";
SqlDataSource1.SelectCommand = sqlString;
SqlDataSource1.DataBind();
}
You are binding the grid again in each post back, so the current row index is set to zero every time and this causes the first row to be edited.
Change you code to:
protected void Page_Load(object sender, EventArgs e)
{
...
if (!IsPostBack)
...
}
You need to modify your code a little bit from:
protected void Page_Load(object sender, EventArgs e)
{
string vs = (string)ViewState["buttonClicked"];
string isEditing = (string)ViewState["isEditing"];
if (IsPostBack)
{
if (vs == "False")
{
RadioButtonListChanged();
GridView1.DataBind();
}
else if (vs == "True")
{
btnSearch_Click(sender, e);
GridView1.DataBind();
}
}
}
To:
protected void Page_Load(object sender, EventArgs e)
{
string vs = (string)ViewState["buttonClicked"];
string isEditing = (string)ViewState["isEditing"];
if (**!IsPostBack**)
**^^^**
/*just bind gridview when page is not
postback this will not bind oyur gridview on your every request*/
if (vs == "False")
{
RadioButtonListChanged();
GridView1.DataBind();
}
else if (vs == "True")
{
btnSearch_Click(sender, e);
GridView1.DataBind();
}
}
}
I found the solution here
Gridview Selects Wrong Row For Editing
in page_load event
if (IsPostBack)
{
SqlDataSource1.SelectCommand = (string)Session["sqlString"];
SqlDataSource1.DataBind();
}
and when i am searching i did this in button event
Session["sqlString"] = sqlString;
That wasn't simple :)

GridView row editing

I have a gridview with five BoundFields.when inserting values to the grid i have got textbox fields to the cells and it's working fine.my issue is when editing a row i only need 3 cells to be editable and other two cells should left read only.how can i achieve this?
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333" GridLines="None" BackColor="WhiteSmoke" CssClass="grid-view"
AlternatingRowStyle-CssClass="alt" PageSize="8"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating"
onrowdatabound="GridView1_RowDataBound"
onrowcommand="GridView1_RowCommand" onrowcreated="GridView1_RowCreated">
<RowStyle BackColor="#EFF3FB" />
<PagerSettings PageButtonCount="5" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:LinkButton ID="btnInsert" runat="server"
Text="Insert" CommandName="Insert" ForeColor="White" />
</HeaderTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="Edit-Update" ShowEditButton="True" />
<asp:BoundField DataField="DeptID" HeaderText="Department ID"
ReadOnly="True" />
<asp:BoundField DataField="DeptCode" HeaderText="Department Code"/>
<asp:BoundField DataField="DeptDescription" HeaderText="Description" />
<asp:CommandField HeaderText="Delete" ShowDeleteButton="True" />
</Columns>
<PagerStyle CssClass="pgr"></PagerStyle>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
Code for inserting values to grid:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Insert")
{
DataTable DT = new DataTable();
DT = PinCDAO.GetDepartments();
DataRow DR = DT.NewRow();
DT.Rows.InsertAt(DR, 0);
GridView1.EditIndex = 0;
GridView1.DataSource = DT;
GridView1.DataBind();
((LinkButton)GridView1.Rows[0].Cells[1].Controls[0]).Text = "Insert";
}
}
Row уditing code:
GridView1.EditIndex = e.NewEditIndex;
Inserting and updating:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
if (GetDeptCode())
{
lblMessage.Text = "Already Contains a Department Code with the Same Name";
}
else if (CheckCodeLength())
{
lblMessage.Text = "Department Code Character Length is 3";
}
else
{
if (((LinkButton)GridView1.Rows[0].Cells[1].Controls[0]).Text == "Insert")
{
DepertmentProperties DP = new DepertmentProperties();
DP.DeptCode = ((TextBox)GridView1.Rows[0].Cells[3].Controls[0]).Text.ToString();
DP.DeptDescription = ((TextBox)GridView1.Rows[0].Cells[4].Controls[0]).Text.ToString();
PinCDAO.InsertDepartment(DP);
}
else
{
DepertmentProperties DP = new DepertmentProperties();
DP.DeptID = Convert.ToInt32(GridView1.Rows[e.RowIndex].Cells[2].Text.ToString());
DP.DeptCode = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString();
DP.DeptDescription = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString();
PinCDAO.UpdateDepartment(DP);
}
GridView1.EditIndex = -1;
BindData();
lblMessage.Text = "";
}
}
Set BoundField's ReadOnly property to "true"

Categories

Resources