listview not updating,inserting

Posted by raging_boner on Stack Overflow See other posts from Stack Overflow or by raging_boner
Published on 2010-04-17T14:50:26Z Indexed on 2010/04/17 14:53 UTC
Read the original article Hit count: 165

Filed under:
|

Data entered in textboxes is not getting updated in database. In debug mode I see that textbox1 and textbox2 in ItemUpdating event contain the same values as they had before calling ItemUpdating.

Here's my listview control:

<asp:ListView ID="ListView1" runat="server"
onitemediting="ListView1_ItemEditing"
onitemupdating="ListView1_ItemUpdating"
oniteminserting="ListView1_ItemInserting">

//LayoutTemplate removed

<ItemTemplate>
    <td align="center" valign="top">
        <asp:Label ID="Label2" runat="server" Text='<%#Eval("id")%>'></asp:Label><br />
        <asp:Label ID="Label3" runat="server" Text='<%#Eval("text1")%>'></asp:Label>
    </td>
    <td>
        <asp:LinkButton ID="LinkButton2" CommandName="Edit" runat="server">Edit</asp:LinkButton>
        <asp:LinkButton ID="LinkButton4" CommandName="Delete" runat="server">Delete</asp:LinkButton>
    </td>
</ItemTemplate>
<EditItemTemplate>
    <td align="center" valign="top">
    <asp:Label ID="Label1" runat="server" Text='<%#Eval("id")%>'></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("text1")%>' TextMode="MultiLine" />
    <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("text2")%>' Height="100" TextMode="MultiLine" />
    <asp:LinkButton ID="LinkButton1" CommandName="Update" CommandArgument='<%# Eval("id")%>' runat="server">Update</asp:LinkButton>
    <asp:LinkButton ID="LinkButton5" CommandName="Cancel" runat="server">Cancel</asp:LinkButton>
    </td>
</EditItemTemplate>
<InsertItemTemplate>
    <td align="center" valign="top">
    <asp:TextBox ID="TextBox3" runat="server" TextMode="MultiLine" Height="100"></asp:TextBox>
    <asp:TextBox ID="TextBox4" runat="server" Height="100" TextMode="MultiLine"></asp:TextBox><br/>
    <asp:LinkButton ID="LinkButton3" runat="server">Insert</asp:LinkButton>
    </td>
</InsertItemTemplate>
</asp:ListView>

Codebehind file:

protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
{
    ListView1.EditIndex = e.NewEditIndex;
    BindList();
}
protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
    ListViewItem myItem = ListView1.Items[ListView1.EditIndex];

    Label id = (Label)myItem.FindControl("Label1");
    int dbid = int.Parse(id.Text);

    TextBox text1 = (TextBox)myItem.FindControl("Textbox1");
    TextBox text2 = (TextBox)myItem.FindControl("Textbox2");

    //tried to work withNewValues below, but they don't work, "null reference" error is being thrown
    //text1.Text = e.NewValues["text1"].ToString();
    //text2.Text = e.NewValues["text2"].ToString();

    //odbc connection routine removed.
    //i know that there should be odbc parameteres:
    comm = new OdbcCommand("UPDATE table SET text1 = '" + text1.Text + "', text2 = '" + text2.Text + "' WHERE id = '" + dbid + "'", connection);

    comm.ExecuteNonQuery();
    conn.Close();

    ListView1.EditIndex = -1;
    //here I databind ListView1
}

What's wrong with updating of text1.Text, text2.Text in ItemUpdating event? Should I use e.NewValues property? If so, how to use it?

Thanks in advance for any help.

© Stack Overflow or respective owner

Related posts about ASP.NET

Related posts about c#