无法在gridview更新中获取文本框和下拉列表的值?

时间:2014-04-03 05:59:29

标签: c# asp.net gridview

GirdView

<Columns>

    <asp:BoundField DataField="idSupplier" HeaderText="idSupplier" SortExpression="idSupplier" Visible="False"/>

    <asp:TemplateField HeaderText="supplierName" SortExpression="supplierName">
        <ItemTemplate>
            <asp:Label ID="LabelsupplierName" runat="server" Text='<%# Bind("supplierName") %>' ></asp:Label>   
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="updatePriceTo" SortExpression="updatePriceTo">
        <EditItemTemplate>
            <asp:TextBox ID="TextBoxUpdatePriceTo" runat="server" Text='<%# Bind("updatePriceTo") %>' ></asp:TextBox>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="LabelUpdatePriceTo" runat="server" Text='<%# Bind("updatePriceTo") %>' ></asp:Label>   
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="operation" SortExpression="operation">
        <EditItemTemplate>
            <asp:DropDownList ID="DropDownListOperation" runat="server" DataTextField="operation" DataValueField="operation" 
                SelectedValue='<%# Bind("operation") %>'>
                <asp:ListItem Text="Select" Value=""></asp:ListItem>
                <asp:ListItem Text="+" Value="+"></asp:ListItem>
                <asp:ListItem Text="-" Value="-"></asp:ListItem>
            </asp:DropDownList>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="LabelOperation" runat="server" Text='<%# Bind("operation") %>' ></asp:Label>   
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="updateType" SortExpression="updateType">
        <EditItemTemplate>
            <asp:DropDownList ID="DropDownUpdateType" runat="server" DataTextField="updateType" DataValueField="updateType" 
                SelectedValue='<%# Bind("updateType") %>'>
                <asp:ListItem Text="Select" Value=""></asp:ListItem>
                <asp:ListItem Text="$" Value="$"></asp:ListItem>
                <asp:ListItem Text="%" Value="%"></asp:ListItem>
            </asp:DropDownList>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="LabelUpdateType" runat="server" Text='<%# Bind("updateType") %>' ></asp:Label>   
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="updateTime" SortExpression="updateTime">
        <ItemTemplate>
            <asp:Label ID="LabelUpdateTime" runat="server" Text='<%# Bind("updateTime") %>' ></asp:Label>   
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

.aspx.cs

protected void GridViewHouzzPriceUpdate_RowUpdating(object sender, GridViewUpdateEventArgs e)

{

    GridViewRow row = (GridViewRow)GridViewHouzzPriceUpdate.Rows[e.RowIndex];
    string updatePriceTo = ((TextBox)row.FindControl("TextBoxUpdatePriceTo")).Text;
    string Operation = ((DropDownList)row.FindControl("DropDownListOperation")).SelectedValue;
    string updateType = ((DropDownList)row.FindControl("DropDownUpdateType")).SelectedValue;

    //Reset the edit index.
    GridViewHouzzPriceUpdate.EditIndex = -1;

    //Bind data to the GridView control.
    bindGridViewHouzzPriceUpdate();
}

当我尝试更新行时,我无法从文本框和下拉列表中获取编辑后的值。谁有想法?

1 个答案:

答案 0 :(得分:0)

绑定前的简单更新数据源。我添加了 UpdateDataSource 自定义方法。您必须为该方法编写适当的代码。根据您的标准更新记录,您将没事。

protected void GridViewHouzzPriceUpdate_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
   GridViewRow row = (GridViewRow)GridViewHouzzPriceUpdate.Rows[e.RowIndex];
   string updatePriceTo = string.Empty;
   string Operation = string.Empty;
   string updateType = string.Empty;

   TextBox txtUpdatePriceTo = row.FindControl("TextBoxUpdatePriceTo") as TextBox;

   if(txtUpdatePriceTo != null)
     updatePriceTo = txtUpdatePriceTo.Text;

   DropDownList ddlOperation = row.FindControl("DropDownListOperation") as DropDownList;

   if(ddlOperation != null)           
    Operation = ddlOperation.SelectedValue;


   DropDownList ddlDropDownUpdateType = row.FindControl("DropDownUpdateType") as DropDownList;

   if(ddlDropDownUpdateType != null)           
    updateType = ddlDropDownUpdateType .SelectedValue;

   //Reset the edit index.
   GridViewHouzzPriceUpdate.EditIndex = -1;

  if(updatePriceTo != string.Empty && Operation != string.Empty && updateType != string.Empty)
   //update data source here 
   UpdateDataSource(updatePriceTo, Operation, updateType); 

  //Bind data to the GridView control.
  bindGridViewHouzzPriceUpdate();
}
相关问题