×
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Guys I am stumped... Novice user here.. gridview edit

Guys I am stumped... Novice user here.. gridview edit

Guys I am stumped... Novice user here.. gridview edit

(OP)
Hello again my friendly experts,

I have a situation whereby I have created a asp.net gridview using template fields. Now, this seems to be working perfectly. I have also added in the EditItemTemplate and ItemTemplate some dropdownlists with the SelectedValue. Something along the lines of <asp:DropDownList ID="Edit_NewDropDownList" runat="server" SelectedValue='<%# Eval("xxx") %>'.

Now what is happening is when I run the app. and click the edit button (say I have 10 rows for example), it looks to me that on the second last row and the last row, some of the field values show blank while some of the other fields have values. Also, clicking the edit button on the second last row overlaps the last row on the gridview (not sure if that has something to do with it maybe gridview formatting/size). It is not until I click cancel that I can then see the last row with populated data.

If I were a betting man, I would say that maybe I have incorrectly written the syntax for some of the controls, but this cannot be because the rest of the rows are work perfectly.

Any ideas. Hope you can visualize this.

RE: Guys I am stumped... Novice user here.. gridview edit

Sounds like a formatting (CSS) issue. Not really sure unless I saw the grid. Perhaps your gridview is too wide for your page?

RE: Guys I am stumped... Novice user here.. gridview edit

(OP)
jbenson001,

Sorry for the delay in getting back to you as I wanted to try a few things myself first. So I added some style sheets, adjusted the paging correctly and looks like my issue is solved:)

However, keeping inline with the issues above, I now have an Gridview update issue that is a result of the drop down list:(

So with that, in my grid view I have some dropdown lists that I structured as follows:
In my .aspx page I have:

<asp:TemplateField HeaderText="New Film" SortExpression="New Film">
<EditItemTemplate>
<asp:DropDownList ID="Edit_NewDropDownList" runat="server" SelectedValue='<%# Eval("New_Film") %>'> //I have also tried Bind instead of Eval
<asp:ListItem>Yes</asp:ListItem>
<asp:ListItem>No</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>

In my .cs page for the update I have:
NewFilm = (((DropDownList)(GridView1.Rows[e.RowIndex].FindControl("Edit_NewDropDownList"))).Text);

and error I get is:

NullReferenceException was unhandled by user code - Object reference not set to an instance of an object.

I am totally lost on this and your help is appreciated. Not sure why this would be null(if that is what it means).

Thanks Jbenson.

Thanks

RE: Guys I am stumped... Novice user here.. gridview edit

It depends on where you are putting the code (what event)

CODE

NewFilm = (((DropDownList)(GridView1.Rows[e.RowIndex].FindControl("Edit_NewDropDownList"))).Text); 

Also, it looks like in code you are trying to get the selected value of the ddl, and in the edit template you are trying to set it.

So, i don't know what the flow of your page is. I assume upon editing a row, you want to set some values, like the ddl. So in the RowDataBound event of the gridview, you need to check if the row is in edit mode. If so, then do a findcontol to get the ddl. From there I would then then set the selected value of the ddl.

Make sense?

RE: Guys I am stumped... Novice user here.. gridview edit

(OP)
I am setting this in the GridView1_RowUpdating event.

Correct, that is exactly what I am doing, I am getting the selected value in the ItemTemplate(showing it in the gridview) then clicking the edit button in the gridview (that I coded) and allowing the user to change it if he/she wants to. Please keep in mind that I have about 3 drop down lists, all following the same idea (list, edit, update) amongst other control type (text box).

This is what I have in the rowdatabound:

if (e.Row.RowType == DataControlRowType.DataRow)
{
}

So currently it isn't doing anything. If you could help with some code, that might make more sense to me cause right now, I am a bit lost on the syntax.

Thanks again.

RE: Guys I am stumped... Novice user here.. gridview edit

I don't see an <ItemTemplate> in your gridview (at least what you posted)

So I need to get more info in order to help.

1.) When the page loads, what do you want to happen? Are you setting values in the ddls? Are the values coming from a database?
2.) When the row is edited, (Edit link is clicked) what do you want to happen?
3.) When the row is edited, and the user clicks "Update", what do you want to happen.

Also, please post all the markup for your gridview.

RE: Guys I am stumped... Novice user here.. gridview edit

(OP)
Let me explain this.

1) I have a form with a bunch of controls (drop down, text box and calendar pop up (controlled by javascript) and not asp.net calendar control.
2) When the user clicks submit button after filling out the form, the value get inserted into the database (SQL Server):
Some of the code below:

protected void btn_insert_Click(object sender, EventArgs e)
{
if (CCConnection.State == ConnectionState.Closed)
{
CCConnection.Open();
}
// here i am using the store procedure named tb_gallery_insert to insert the record inside the database.
SqlCommand cmd = new SqlCommand("Insert_Form_Fields", CCConnection);
Console.WriteLine(cmd);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = CCConnection;

cmd.Parameters.AddWithValue("@TicketNumber", txt_Ticket_number.Text);
....... until all my paramters are added

3) On page load all I want to happen is show the results submitted to the database (all rows) in a grid view - to which it is doing:

protected void Page_Load(object sender, EventArgs e)
{
//here i declare the connection of the connectionstring to attach the database with the application
CCConnection.ConnectionString = ConfigurationManager.ConnectionStrings["CCConnection"].ConnectionString;
CCConnection.Open();

if (CCConnection.State == ConnectionState.Closed)
{
CCConnection.Open();
}
CCConnection.Close();

if (!IsPostBack)
{

grd_bind();
}
}

The grd_bind() function, using a stored procedure, simply select all values from the Table to display in Gridview.

4) When looking at the page/gridview the user has the option to Edit the Gridview record, or delete it.
5) When the user clicks the edit link on the gridview record, each of the fields open and become editable
6) When the user changes those values and clicks update, I want to save these updated values back to the database using a Stored Procedure. I am trying to do this in the RowUpdating, event using and Update_Procedure stored procedure...as below:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

if (CCConnection.State == ConnectionState.Closed)
{
CCConnection.Open();
}

TicketNumber = (((TextBox)(GridView1.Rows[e.RowIndex].FindControl("Edit_TicketNumber"))).Text);
NewFilm= (((DropDownList)(GridView1.Rows[e.RowIndex].FindControl("Edit_NewFilmDropDownList"))).Text);
MovieName = (((TextBox)(GridView1.Rows[e.RowIndex].FindControl("Edit_MovieName"))).Text);

SqlCommand cmd = new SqlCommand("Update_Procedure", cnn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = cnn;

cmd.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
cmd.Parameters.Add("@TicketNum", SqlDbType.VarChar, 50).Value = TicketNumber;
cmd.Parameters.Add("@New_Film", SqlDbType.VarChar, 50).Value = New_Film;
cmd.Parameters.Add("@MovieName", SqlDbType.VarChar, 50).Value = MovieName;
cmd.ExecuteNonQuery();
cmd.Dispose();
GridView1.EditIndex = -1;
grd_bind();

7) What I also want in the row updating is if the user clicks the edit button, but then decides he/she does not want to update anymore but rather insert a new record, when he/she clicks on anything other then the fields on the row to be editted (not just a cancel button as in comment 8), it show close the edit functionality. What is happening now is if the user changes his/her mind about editting, and for instance, clicks the next page, if I go back to the page that record is still in edit mode. I don't want that.
What I also want to add, but need some help as well, is a file upload control, next to each record in the gridview, that when the user clicks edit, they will see a new input box, with a upload button to attach word docs, excel spreadsheets extra. In the event that they want to change that after updating, they can also do it. If they do attach a word doc, in a gridview colum they see just a word icon that is clickable and can open the doc (not sure if that is possible)

7) I also have some cancel functionality on row if users changes his or her mind. He/she clicks cancel button.

8) Gridview mark up:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowdeleting="GridView1_RowDeleting"
onrowediting="GridView1_RowEditing"
onrowupdating="GridView1_RowUpdating"
onselectedindexchanging="GridView1_SelectedIndexChanging"
OnPageIndexChanging="GridView1_PageIndexChanging"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
OnSorting="GridView1_Sorting" PageSize="20" AllowPaging="True" CellPadding="4" ForeColor="#333333" GridLines="None"
CssClass="Grid_DataTable">

<Columns>
<%--here i am using templatefields to for binding the gridview--%>

<asp:TemplateField HeaderText="ID" SortExpression="Intake" Visible="false">
<EditItemTemplate>
<asp:TextBox ID="ID" runat="server" width="30px" Text='<%# Eval("ID") %>'> </asp:TextBox>
</EditItemTemplate>

<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Ticket Number" SortExpression="Ticket Number">
<EditItemTemplate>
<asp:TextBox ID="Edit_Ticket_number" runat="server" Width="100px" Text='<%# Eval("Ticket_Number") %>' ReadOnly="True" BackColor="Silver"> </asp:TextBox>
</EditItemTemplate>

<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("Ticket_Number") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="New Film" SortExpression="New Film">
<EditItemTemplate>
<asp:DropDownList ID="Edit_NewFilmDropDownList" runat="server" SelectedValue='<%# Eval("New_Film") %>' >
<asp:ListItem>Yes</asp:ListItem>
<asp:ListItem>No</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>

<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Eval("New_Film") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Movie Name" SortExpression="Movie name">

<EditItemTemplate>
<asp:TextBox ID="Edit_MovieName" runat="server" TextMode="MultiLine" Text='<%# Eval("Movie_Name") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" width="100px" Text='<%# Eval("Movie_Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Delete"
onclientclick="return confirm('Stop\n Are you sure you want to delete this column!')">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Update">
<EditItemTemplate>

<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="false"
CommandName="Update">Update</asp:LinkButton>
<asp:LinkButton ID="LinkButton4" runat="server" CausesValidation="False"
CommandName="Cancel">Cancel</asp:LinkButton>
</ItemTemplate>
</EditItemTemplate>

<ItemTemplate>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="True"
CommandName="Edit">Edit</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Delete">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Update">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="false"
CommandName="Update">Update</asp:LinkButton>
<asp:LinkButton ID="LinkButton4" runat="server" CausesValidation="False"
CommandName="Cancel">Cancel</asp:LinkButton>
</ItemTemplate>
</EditItemTemplate>

<ItemTemplate>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="True"
CommandName="Edit">Edit</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

8) I don't have any page sorting yet and was trying to work on that, but need more time.

Hopefully this make sense?

Thanks SO MUCH jbenson.

RE: Guys I am stumped... Novice user here.. gridview edit

Quote:


What is happening now is if the user changes his/her mind about editting, and for instance, clicks the next page, if I go back to the page that record is still in edit mode. I don't want that.
You will have to use the PageIndexChanging event and set the edititemindex = -1 before binding the grid. (GridView1.EditIndex = -1)

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members! Already a Member? Login


Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close