Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which is the recommended way to fill all controls on a Web Form when user selects a record?

I have a GridView control which shows a list of all employees. When user selects any employee from this list, the record is shown on a Web Form with all input controls pre-filled with the values.

I want to know any good approach to do this. Should I bind all input controls to any SqlDataSource or should I re-populate all input controls by picking values from the DataSet.

like image 337
RKh Avatar asked Jul 06 '12 08:07

RKh


People also ask

Which method is use for adding controls to a web form?

first add TextBox control on web form from Toolbox, just select TextBox control in Toolbox and drag and drop on web form or make double click on TextBox control it will added on web form then add Button control on web form like shows below screen. Adding server side control to asp.net web form.

What is web form model?

Web Forms are pages that your users request using their browser. These pages can be written using a combination of HTML, client-script, server controls, and server code.


1 Answers

First you add the select button on your GridView as:

<asp:ButtonField Text="Select" CommandName="ViewMe" ButtonType="Button" />

then you add the OnRowCommand="RowCommand" property on GridView to call this function when the button is clicked and on code behind the function:

protected void RowCommand(object sender, GridViewCommandEventArgs e)
{
    // if the ViewMe command is fired
    if (e.CommandName == "ViewMe")
    {
        // go to find the index on the grid view
        int iTheIndexNow;
        if (int.TryParse(e.CommandArgument.ToString(), out iTheIndexNow))
        {
            // Set and highlight the selected
            TheGridView.SelectedIndex = iTheIndexNow;

            // do we have the table data id ?
            if (TheGridView.SelectedValue != null)
            {
                // now load the controls data using this id
                LoadValuesFromDatabaseToControls(TheGridView.SelectedValue);
            }    
        }
    }
}

I prefer this way of command button because you can add more commands than the select, or edit, even the delete or copy... the just index change can be done for any reason (eg by changing page) and is also need again the select.

I use the subsonic 2 DAL for loading the data from the database. A sample code from my programs is:

    void LoadValuesFromDatabaseToControls(string editID)
    {
        // Load it from database
        AthUserMaiListName OneRow = new AthUserMaiListName(editID);

        if (OneRow.IsNotExist)
        {
            // a custom control that show messages on top.
            uResult.addMsg("Fail to load id " + editID, MsgType.error);
            // close the view of the controls
            dbViewPanel.Visible = false;
        }
        else // else we have the data and go for show them
        {
          // show this panel that contains the controls.
          dbViewPanel.Visible = true;

          // I keep my current edit id
          lblID.Text = editID;

          // just be sure that the select exist on DrowDownList
          MyUtils.SelectDropDownList(ddlEventType, OneRow.CAddedFrom);

          txtEmail.Text = OneRow.CEmail;
          txtFirstName.Text = OneRow.CFirstName;
          txtLastName.Text = OneRow.CLastName;
          txtInsideTitle.Text = OneRow.CInsideTitle;
          txtCompanyName.Text = OneRow.CCompanyName;        

          txtCreated.Text = DateTimeRender(OneRow.CreatedOn);
          txtModified.Text = DateTimeRender(OneRow.ModifiedOn);
        }
   }
like image 56
Aristos Avatar answered Oct 02 '22 12:10

Aristos