2010-09-07 61 views
0

我有一个用户更新记录的FormView。有一个链接按钮,当火灾应通过BLL和DAL进行更新时。我不使用内置的ODS,我不会考虑使用它。FormView手动数据绑定

我通过调用从数据库中获取数据的方法来填充我的所有网格和formviews填充的manuualy。

例如我的详细信息查看填充像这样:

protected void DlMembers_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    if (e.CommandName.ToString() == "Select") 
    { 
     DlMembers.Visible = false; 
     lblError.Text = string.Empty; 
     lblError.Visible = false; 
     fvMemberDetail.Visible = true; 
     fvMemberDetail.ChangeMode(FormViewMode.Edit); 

     MemberBLL getMemberInfo = new MemberBLL(); 

     int Ident = Convert.ToInt32(e.CommandArgument.ToString()); 

     fvMemberDetail.DataSource = getMemberInfo.GetMemberByIdent(Ident); 
     fvMemberDetail.DataBind(); 

    } 

    if (e.CommandName.ToString() == "DeleteSelected") 
    { 
     DlMembers.Visible = true; 
     lblError.Text = string.Empty; 
     lblError.Visible = false; 
     fvMemberDetail.Visible = false; 
     fvMemberDetail.ChangeMode(FormViewMode.ReadOnly); 
    } 

我想要做的,如果到capature我的单击事件LinkBut​​ton的和做(除了运行时从来没有达到这个方法):

protected void MemberInfoUpdating(object sender, EventArgs e) 
{ 
    TextBox id = (TextBox)fvMemberDetail.FindControl("txtIdent"); 

    if (id.Text != string.Empty || id.Text != "") 
    { 
     TextBox txtFN = (TextBox)fvMemberDetail.FindControl("txtFN"); 
     TextBox txtLN = (TextBox)fvMemberDetail.FindControl("txtLN"); 
     DropDownList ddlAddress = (DropDownList)fvMemberDetail.FindControl("ddlAddress"); 
     TextBox txtEmail = (TextBox)fvMemberDetail.FindControl("txtEmail"); 
     TextBox txtHPhone = (TextBox)fvMemberDetail.FindControl("txtHPhone"); 
     TextBox txtWPhone = (TextBox)fvMemberDetail.FindControl("txtWPhone"); 
     TextBox txtMPhone = (TextBox)fvMemberDetail.FindControl("txtMPhone"); 
     DropDownList ddlPos = (DropDownList)fvMemberDetail.FindControl("ddlPos"); 
     DropDownList ddlIsAdmin = (DropDownList)fvMemberDetail.FindControl("ddlIsAdmin"); 
     bool blIsAdmin = false; 
     if (ddlIsAdmin.SelectedValue == "True") blIsAdmin = true; 
     TextBox txtComments = (TextBox)fvMemberDetail.FindControl("txtComments"); 

     MemberBLL updateMemberInfo = new MemberBLL(); 

     bool UpdateOK = updateMemberInfo.UpdateMemberByIdent(
         txtFN.Text, 
         txtLN.Text, 
         ddlAddress.SelectedValue, 
         txtEmail.Text, 
         txtHPhone.Text, 
         txtWPhone.Text, 
         txtMPhone.Text, 
         blIsAdmin, 
         txtComments.Text, 
         Convert.ToInt32(ddlPos.SelectedValue), 
         Convert.ToInt32(id.Text)); 
    } 
    else 
    { 
     //Display error - no user id cannot update record 
    } 
} 

LinkBut​​ton的是这样的:

<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
       OnClick="MemberInfoUpdating" Text="Update" /> 

回答

0

这是哪里的LinkBut​​ton?如果它是一个FormView模板内,那么你可能需要使用这样的事情,而不是:

<asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /> 

然后在DlMembers_ItemCommand处理“更新”命令。

另外,附上你的代码FormView控件的OnItemUpdating事件,而不是一些额外的活动,你并不需要:这些事件火灾

<asp:FormView ID="fvMemberDetail" runat="server" OnItemUpdating="MemberInfoUpdating"> 
+0

无。这里是标记: – Risho 2010-09-10 13:55:19

+0

Risho 2010-09-10 13:58:36

+0

嗯......害怕我然后在一个损失。然而,我可以告诉你,根据我的经验,非触发事件最常见的原因是数据绑定控件绑定错误 - 或者在不应该时反弹,或者绑定在错误的页面生命周期事件中。 – Bryan 2010-09-13 18:44:01