Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 549
  • Last Modified:

Formview - Binding to edit

My formview is having an issue. I have two dropdown boxes. Facility and Department. The department list is dependent facility. So I call the facility and then then pull the department where facility is equal to what is in that first dropdown. For example..  First dropdown box is Microsoft and the dropdown list all the departments. Then I  using SelectedValue = (Bind etc etc)  to get the specific Facility (Microsoft) and department that is associated with the formview record.
This all works fine.
Now the issue.  If the user wants to edit that facility or department, it does not work. I get an error on the Bind.  Because when I change the facility, the department list needs to change and the Bind is no longer valid.  
So how do I get the field to unbind from the formview when the facility is changed?
If it is not possible, suggestions on how make this form user friendly.  

This form is create by a user.  When they submit it, another user gets the email.  That user logs in and looks at the original submission and they may need to make changes like directly informaton to a differnt department.

0
aninec
Asked:
aninec
  • 2
1 Solution
 
NazoUKCommented:
Yeah, this is a known issue with the way databinding works and a bit awkward to get around.
What I tend to do is remove the SelectedValue = '<%#Bind.....' from the dropdownlist that has its items updated, then in the OnUpdating event of whichever datasource type you are using manually get the value out of the formview using FindControl and plug that into the updateparameters, business object or whatever you are using.

It's a bit difficult to give a concrete example without knowing the datasource you are using. Is it a sqldatasource, object data source etc?
0
 
aninecAuthor Commented:
Its SQL.  I am not sure how to approach your method.  
0
 
NazoUKCommented:
OK, in your sqldatasource add the following: OnUpdating="sqlds_Updating" OnInserting="sqlds_Updating"
You'll also need a parameter in updateparameters and insertparameters that correspond to the field name:

<asp:Parameter Name="fieldName" Type="Int32" DefaultValue="0" />

Then in your code behind add a method to handle this event and get the values out of the FormView and put them into the parameters:

C#:

    protected void sql1_Updating(object sender, SqlDataSourceCommandEventArgs e)
    {
             DropDownList dd = (DropDownList) yourFormView.FindControl("DropDownName");
             e.Command.Parameters["fieldName"].Value = Convert.ToInt32(dd.SelectedValue);
    }

VB:

    Protected Sub sql1_updating(sender as object, e as SqlDataSourceCommandEventArgs)
    {
            Dim dd as DropDownList = Ctype(yourFormView.FindControl("DropDownName"),DropDownList)
            e.Command.Parameters("fieldName").Value = CInt(dd.SelectedValue)
    }

This assumes your dropdowns store int values, if not you'll need to change the code as appropriate.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now