开发者

listview and datalist not updating,inserting

开发者 https://www.devze.com 2022-12-27 10:49 出处:网络
Data entered in textboxes is not getting updated in database. In debug mode I see that text1 and text2 in ItemUpdating event contain the same values as they had before calling ItemUpdating.

Data entered in textboxes is not getting updated in database. In debug mode I see that text1 and text2 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>
      <asp:Label ID="Label2" runat="server" Text='<%#Eval("id")%>'></asp:Label>
      <asp:Label ID="Label3" runat="server" Text='<%#Eval("text1")%>'></asp:Label>

      <asp:LinkButton ID="LinkButton2" CommandName="Edit" runat="server">Edit</asp:LinkButton>
      <asp:LinkButton ID="LinkButton4" CommandName="Delete" runat="server">Delete</asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
    <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>
</EditItemTemplate>
<InsertItemTemplate>
    <asp:TextBox ID="TextBox3" runat="server" TextMode="MultiLine" Height="100"></asp:TextBox>
    <asp:TextBox ID="TextBox4" runat="server" Height="100" TextMode="MultiLine"></asp:TextBox>

    <asp:LinkButton ID="LinkButton3" runat="server">Insert</asp:LinkButton>
</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 tabl开发者_JS百科e 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.


Pffff. 2 days wasted. Just found out that I forgot to use to use in Page_Load():

    if (!IsPostBack) 
    { 
        ListView1.DataSource = ds;
        ListView1.DataBind();
    }
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号