如何更新FormView?

| 我有FormView:
 <asp:FormView ID=\"fvReport\" runat=\"server\" AllowPaging=\"false\" 
        OnModeChanging=\"fvReport_ModeChanging\"  
        OnItemUpdating=\"fvReport_ItemUpdating\" 
        DataKeyNames=\"id\" DataSourceID=\"ObjectReport\">
    <ItemTemplate>
        <asp:LinkButton ID=\"lbEdit\" runat=\"server\" CausesValidation=\"true\" CommandName=\"Edit\" >Edit</asp:LinkButton>
        <table>
           <tr id=\"order\">
               <td style=\"Width:90px;\">order:</td>
               <td><asp:textbox ID=\"Textbox7\" runat=\"server\" Text=\'<%# Eval(\"order\") %>\' Width=\"600px\" TextMode=\"MultiLine\" ReadOnly=\"True\" Rows=\"3\" BorderStyle=\"NotSet\" CssClass=\"text-details\"></asp:textbox></td></tr>
           <tr id=\"purpose\">
               <td style=\"Width:90px;\">purpose:</td>
               <td><asp:textbox ID=\"Textbox8\" runat=\"server\" Text=\'<%# Eval(\"purpose\") %>\' Height=\"34px\" Width=\"600px\" TextMode=\"MultiLine\" ReadOnly=\"True\" CssClass=\"text-details\"></asp:textbox></td></tr>
           <tr id=\"feature_runs\">
               <td style=\"Width:90px;\">features:</td>
               <td><asp:textbox ID=\"Textbox9\" runat=\"server\" Text=\'<%# Convert.ToString(Eval(\"features\")).Replace( \"Esc\", \"Еsс\")%>\' Height=\"52px\" Width=\"600px\"  ReadOnly=\"True\" TextMode=\"MultiLine\" Font-Italic=\"True\" ForeColor=\"Red\" Enabled=\"false\" CssClass=\"text-details\"></asp:textbox></td></tr>
           <tr id=\"settings\">
               <td style=\"Width:90px;\">settings:</td>
               <td><asp:textbox ID=\"Textbox10\" runat=\"server\" Text=\'<%# Convert.ToString(Eval(\"settings\")).Replace( \"Esc\", \"Еsс\") %>\' Height=\"44px\" Width=\"600px\"  TextMode=\"MultiLine\" ReadOnly=\"True\" CssClass=\"text-details\"></asp:textbox></td></tr>
        </table>
    </ItemTemplate>
    <EditItemTemplate>
        <table>
           <tr id=\"order\">
               <td style=\"Width:90px;\">order:</td>
               <td><asp:textbox ID=\"Textbox7\" runat=\"server\" Text=\'<%# Eval(\"order\") %>\' Width=\"600px\" TextMode=\"MultiLine\" ReadOnly=\"True\" Rows=\"3\" BorderStyle=\"NotSet\" CssClass=\"text-details\"></asp:textbox></td></tr>
           <tr id=\"purpose\">
               <td style=\"Width:90px;\">purpose:</td>
               <td><asp:textbox ID=\"Textbox8\" runat=\"server\" Text=\'<%# Eval(\"purpose\") %>\' Height=\"34px\" Width=\"600px\" TextMode=\"MultiLine\" ReadOnly=\"True\" CssClass=\"text-details\"></asp:textbox></td></tr>
           <tr id=\"feature_runs\">
               <td style=\"Width:90px;\">features:</td>
               <td><asp:textbox ID=\"Textbox9\" runat=\"server\" Text=\'<%# Convert.ToString(Eval(\"features\")).Replace( \"Esc\", \"Еsс\")%>\' Height=\"52px\" Width=\"600px\"  ReadOnly=\"True\" TextMode=\"MultiLine\" Font-Italic=\"True\" ForeColor=\"Red\" Enabled=\"false\" CssClass=\"text-details\"></asp:textbox></td></tr>
           <tr id=\"settings\">
               <td style=\"Width:90px;\">settings:</td>
               <td><asp:textbox ID=\"Textbox10\" runat=\"server\" Text=\'<%# Convert.ToString(Eval(\"settings\")).Replace( \"Esc\", \"Еsс\") %>\' Height=\"44px\" Width=\"600px\"  TextMode=\"MultiLine\" ReadOnly=\"True\" CssClass=\"text-details\"></asp:textbox></td></tr>
        </table>
        <asp:LinkButton ID=\"lbUpdate\" runat=\"server\" CausesValidation=\"true\" CommandName=\"Update\" >Save</asp:LinkButton>
        <asp:LinkButton ID=\"lbCancel\" runat=\"server\" CausesValidation=\"false\" CommandName=\"Cancel\">Cancel</asp:LinkButton>
    </EditItemTemplate>
    </asp:FormView>
ObjectDataSource:
<asp:ObjectDataSource ID=\"ObjectReport\" runat=\"server\"
       TypeName = \"ObjectDataSources.CS.ConnectionToDB\"
       SelectMethod = \"GetReportById\" UpdateMethod=\"\">
   <SelectParameters>
       <asp:Parameter Name=\"report_id\" Type =\"Int32\" />
   </SelectParameters>
   <UpdateParameters>
       <asp:Parameter Name=\"report_id\" Type =\"Int32\" />
       <asp:Parameter Name=\"settings\" Type = \"String\" />
       <asp:Parameter Name=\"purpose\" Type = \"String\" />
       <asp:Parameter Name=\"order\" Type = \"String\" />
       <asp:Parameter Name=\"features\" Type = \"String\" />
   </UpdateParameters>
</asp:ObjectDataSource>
UpdateMetod:
    public int UpdateReportById(int report_id, string settings, string purpose, string order, string features)
        {
            SqlConnection conn = new SqlConnection(_connectionString);
            SqlCommand cmd = new SqlCommand(\"Update main_report SET settings = @settings, \" + 
                \"purpose = @purpose, order = @order, \" +
                \"features = @features WHERE id = @id\", conn);
            cmd.Parameters.Add(\"@id\", SqlDbType.Int).Value = report_id;
            cmd.Parameters.Add(\"@settings\", SqlDbType.VarChar).Value = settings;
            cmd.Parameters.Add(\"@purpose\", SqlDbType.VarChar).Value = purpose;
            cmd.Parameters.Add(\"@order\", SqlDbType.VarChar).Value = order;
            cmd.Parameters.Add(\"@features\", SqlDbType.VarChar).Value = features;
            int result = 0;
            try
            {
                conn.Open();
                result = cmd.ExecuteNonQuery();
            }
            catch (SqlException e)
            {
                throw new Exception(\"UpdateReportById Exception.\");
            }
            finally
            {
                conn.Close();
            }
            return result;
        }
fvReport_ItemUpdating:
protected void fvReport_ItemUpdating(Object sender, FormViewUpdateEventArgs e)
{
    switch (fvReport.CurrentMode)
    {
        case FormViewMode.Edit:
            fvReport.AllowPaging = false;
            lbl.Text = \"Update!!!\";
            fvReport.ChangeMode(FormViewMode.ReadOnly);
            fvReport.DataBind();
            break;
    }
    fvReport.DataBind();
}
但数据未更新(标签已更新:))。我究竟做错了什么?     
已邀请:
您需要在代码中输入
updatedEvent
,而不是
updatingEvent
switch (fvReport.CurrentMode)
{
    case FormViewMode.Edit:
        fvReport.AllowPaging = false;
        lbl.Text = \"Update!!!\";
        fvReport.ChangeMode(FormViewMode.ReadOnly);
        fvReport.DataBind();
        break;
}
fvReport.DataBind();
编辑:在发布完整的表单设计之后,我注意到在您的编辑配置文件中,您的价值已受到约束,例如...
Text=\'<%# Eval(\"order\") %>\'
但是此功能仅提供一种方式绑定。这意味着它将填充数据库中的值以进行控制。 但是,当您尝试更新值时,这不会将值传递回来。 您必须使用
Bind instead Eval
,它提供两种方式的绑定。喜欢..
Text=\'<%# Bind(\"order\") %>\'
在“编辑和插入”模板中添加所有控件。     
您必须设置
FormView
DataSourceControlID
属性
    <asp:FormView ID=\"fvReport\" runat=\"server\" AllowPaging=\"false\" 
                OnModeChanging=\"fvReport_ModeChanging\"  
                OnItemUpdating=\"fvReport_ItemUpdating\" 
                DataKeyNames=\"id\" 
                DataSourceID=\"ObjectReport\">
    

要回复问题请先登录注册