using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class UserControl_Books : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    //编辑
    protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = e.Item.ItemIndex;
        DataList1.DataBind();
    }
    //取消
    protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = -1;
        DataList1.DataBind();
    }
    //更新
  protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
    {
        Int32 ClassId;
        if (((DropDownList)e.Item.FindControl("ClassName")).SelectedValue == "0")
        {
            ClassId = int.Parse(((TextBox)e.Item.FindControl("ClassId")).ToString());
        }
        else
        {
            ClassId = int.Parse(
                ((DropDownList)e.Item.FindControl("ClassName")).SelectedValue);
        }
        String BookName =
     ((TextBox)e.Item.FindControl("BookName")).ToString();
        String Author =
     ((TextBox)e.Item.FindControl("Author")).ToString();
        String Publish =
     ((TextBox)e.Item.FindControl("Publish")).ToString();
        Decimal Price = Decimal.
     ((TextBox)e.Item.FindControl("Price")).ToString();
        String Image =
     ((TextBox)e.Item.FindControl("Image")).ToString();
        Int32 Qty = int.Parse(
     ((TextBox)e.Item.FindControl("Qty")).ToString());
        Int32 PageNum = int.Parse(
     ((TextBox)e.Item.FindControl("PageNum")).ToString());
        String BinDing =
     ((TextBox)e.Item.FindControl("BinDing")).ToString();
        Int32 Format = int.Parse(
     ((TextBox)e.Item.FindControl("Format")).ToString());
        String ISBN =
    ((TextBox)e.Item.FindControl("ISBN")).ToString();
        String Descn =
    ((TextBox)e.Item.FindControl("Descn")).ToString();
        String Content =
    ((TextBox)e.Item.FindControl("Content")).ToString();
        String BookId =
     DataList1.DataKeys[e.Item.ItemIndex].ToString();        SqlDataSource2.UpdateParameters["ClassId"].DefaultValue
    = ClassId;
        SqlDataSource2.UpdateParameters["BookName"].DefaultValue
            = BookName;
        SqlDataSource2.UpdateParameters["Author"].DefaultValue
            = Author;
        SqlDataSource2.UpdateParameters["Publish"].DefaultValue
            = Publish;
        SqlDataSource2.UpdateParameters["Price"].DefaultValue
            = Price;
        SqlDataSource2.UpdateParameters["Image"].DefaultValue
            = Image;
        SqlDataSource2.UpdateParameters["Qty"].DefaultValue
            = Qty;
        SqlDataSource2.UpdateParameters["PageNum"].DefaultValue
            = PageNum;
        SqlDataSource2.UpdateParameters["BinDing"].DefaultValue
            = BinDing;
        SqlDataSource2.UpdateParameters["Format"].DefaultValue
            = Format;
        SqlDataSource2.UpdateParameters["ISBN"].DefaultValue
            = ISBN;
        SqlDataSource2.UpdateParameters["Descn"].DefaultValue
            = Descn;
        SqlDataSource2.UpdateParameters["Content"].DefaultValue
            = Content;
        SqlDataSource2.UpdateParameters["BookId"].DefaultValue
            = BookId;        SqlDataSource2.Update();
        DataList1.EditItemIndex = -1;
        DataList1.DataBind();
    }
}

解决方案 »

  1.   

    这么多 看得就头疼 你还是用linq吧
      

  2.   

    改了一下,把UpdateCommand里面的类型全部改成String,在SqlDataSource的更新参数写对应的数据类型,可是更新的时候显示“输入字符串的格式不正确
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:BookShopConnectionString %>"
        SelectCommand="SELECT * FROM [Book-Class] WHERE ([BookId] = @BookId)" 
        UpdateCommand="UPDATE [Book] SET [BookName] = 
                     @BookName, [ClassId] = @ClassId,[Author] = @Author,
                     [Publish] = @Publish,[Price] = @Price,[Image] = @Image,
                     [Qty] = @Qty,[PageNum] = @PageNum,[BinDing] = @BinDing,[Format] = @Format,
                     [ISBN] = @ISBN,[Descn] = @Descn,[Content] = @Content
                     WHERE [BookId] = @BookId">
        <SelectParameters>
            <asp:ControlParameter ControlID="GridView1" Name="BookId" PropertyName="SelectedValue"
                Type="Int32" />
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="BookName" Type="String" />
            <asp:Parameter Name="ClassId" Type="Int32" />
            <asp:Parameter Name="Author" Type="String" />
            <asp:Parameter Name="Publish" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="Image" Type="String" />
            <asp:Parameter Name="Qty" Type="Int32" />
            <asp:Parameter Name="PageNum" Type="Int32" />
            <asp:Parameter Name="BinDing" Type="String" />
            <asp:Parameter Name="Format" Type="Int32" />
            <asp:Parameter Name="ISBN" Type="String" />
            <asp:Parameter Name="Descn" Type="String" />
            <asp:Parameter Name="Content" Type="String" />
            <asp:Parameter Name="BookId" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>