如何在写入db之前存储来自可编辑gridview的数据

时间:2012-11-27 12:01:17

标签: c# gridview

我有一个从数据库填充的gridview,我想允许用户编辑并添加到gridview。完成更改/添加后,将其提交到数据库。有人可以帮我怎么做吗?

这是我目前的代码

 <asp:GridView ID="Grd" runat="server" AutoGenerateColumns="False" OnRowEditing="Grds_RowEditing"
    OnRowCancelingEdit="Grd_RowCancelingEdit" OnRowUpdating="Grd_RowUpdating" Width="500px">
    <Columns>
        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <asp:HiddenField ID="NameID" runat="server" Value='<%# Bind("ID")%>' />
                <asp:Label ID="LblName" runat="server" Text='<%# Bind("Name")%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Date">
            <EditItemTemplate>
                <asp:TextBox ID="TxtDate" runat="server" Text='<%# Bind("Date") %>'></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="LblDate" runat="server" Text='<%# Bind("Date")%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowEditButton="True" />
        <asp:CommandField ShowDeleteButton="True" />
    </Columns>
</asp:GridView><asp:Button ID="btnok" Text="OK" Height="25" Width="25" runat="server" />

和背后的代码

protected void Page_Load(object sender, EventArgs e)
        {
            BindGrid(int.Parse(hfID.Value));
      }

        protected void BindGrid(int iPerson)
        {
            DataContext dc = new DataContext(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);

            var qry = from p in dc.GetDetails(iPerson)
                      select p;

            Grd.DataSource = qry;
            Grd.DataBind();
        }
   protected void Grd_RowEditing(object sender, GridViewEditEventArgs e)
        {
            Grd.EditIndex = e.NewEditIndex;
            //Bind data to the GridView control.
            BindGrid(int.Parse(hfID.Value));

        }
        protected void Grd_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            Grd.EditIndex = -1;
            BindGrid(int.Parse(hfID.Value));
        }

        protected void Grd_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {

        }


 protected void btOK_Click(object sender, EventArgs e)
        {
//update the database with changes
        }

1 个答案:

答案 0 :(得分:0)

在按钮单击中尝试此操作, dtCurrentTable 是您的gridview绑定数据表。

int rowIndex = 0;
StringCollection sc = new StringCollection(); 

for (int i = 1; i <= dtCurrentTable.Count; i++)
{
//extract the TextBox values
Label box1 = (Label)GridView2.Rows[rowIndex].Cells[0].FindControl("lblbedroom");
DropDownList box2 = (DropDownList)GridView2.Rows[rowIndex].Cells[0].FindControl("ddpAccomodates");
DropDownList box3 = (DropDownList)GridView2.Rows[rowIndex].Cells[0].FindControl("ddpBathroom");
DropDownList box4 = (DropDownList)GridView2.Rows[rowIndex].Cells[0].FindControl("ddpBedType");
TextBox box5 = (TextBox)GridView2.Rows[rowIndex].Cells[0].FindControl("txtPrices");
DropDownList box6 = (DropDownList)GridView2.Rows[rowIndex].Cells[0].FindControl("ddpMiniStay");
//get the values from the TextBoxes
//then add it to the collections with a comma "," as the delimited values
sc.Add("Private Room" + box1.Text + "," + box2.SelectedItem.Value + "," + box3.SelectedItem.Value + "," + box4.SelectedItem.Value + "," + box5.Text + "," + box6.SelectedItem.Value);
rowIndex++;
}

InsertToDb(sc);

然后

private void InsertToDb(StringCollection sc)
    {
        string[] splitItems = null;
        foreach (string item in sc)
        {
         //split and save in to db here
        }
    }