C #: помочь вернуть набор данных и назначить значения для элементов управления - PullRequest
0 голосов
/ 24 сентября 2010

Я не очень привык к C #, но раньше использовал VB.NET.

Мне нужно установить значение текстовых полей, выпадающих списков и т. Д. Из данных запроса. Для ввода данных я использовал класс Computer с методом saveComputer (), который получает значения от пользовательских элементов управления. Теперь я хочу страницу редактирования, которая использует идентификатор из url и использует getComputer (id) из класса Computer и возвращает значения, которые должны быть установлены для пользовательских элементов управления. Я не уверен в использовании этого метода для установки контрольных значений.

Edit.aspx.cs

 protected void btnSave_Click(object sender, EventArgs e)
    {
        int id = 3; //will be replaced to GET value
        Computer comp = new Computer();
        //comp.updateComputer(ref id);

    }

Мой компьютер класс

public getComputer(ref int id)
    {
        DataSet data = new DataSet();
        using (SqlConnection conn = new SqlConnection(
               "Server=JURA;Database=ReadyForSeven;User id=;Password="))
        {
            String sql = "SELECT * FROM computers WHERE id=@id";

            //replace contatenation of variable with parameter name


            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = sql.ToString();
            cmd.CommandType = CommandType.Text;

            //Define SqlParameter object and assign value to the parameter

            cmd.Parameters.Add("@id", SqlDbType.Int);
            cmd.Parameters["@id"].Value = id;

            try
            {
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    da.Fill(data);
                    // return data here
                }
            }
            catch (SqlException ex)
            {
                //send user to error page and log message

            }
        }
    }

Итак, чего я хочу добиться, так это использовать метод getcomputer для Computer, чтобы установить значения элементов управления в Edit.aspx

Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 24 сентября 2010

Вам потребуется изменить метод getComputer, чтобы он возвращал DataSet, например:

public DataSet getComputer(int id) {

Как только это будет сделано, мы можем вызвать его и заполнить элементы управления формы при загрузке страницы примерно следующим образом:

protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
        int id = 3; // get from querystring
        DataSet ds = getComputer(id);
        DataRow dr = ds.Tables[0].Rows[0]; // get the first row returned

        // populate form controls
        txtFirstName.Text = dr["FirstName"].ToString();
        ddlState.SelectedValue = dr["State"].ToString();
    }
}

Ниже приведена обновленная версия getComputer, которая всегда будет возвращать значение и немного более узкая:

public DataSet getComputer(int id) // you don't need to pass int by ref unless you're planning on changing it inside this method
{
    DataSet data = new DataSet();
    using (SqlConnection conn = new SqlConnection("Server=JURA;Database=ReadyForSeven;User id=;Password=")) {
        using (SqlCommand cmd = new SqlCommand("SELECT * FROM computers WHERE id = @id", conn)) {
            cmd.Parameters.AddWithValue("id", id);
            using (SqlDataAdapter da = new SqlDataAdapter(cmd)) {
                da.Fill(data);
                return data;
            }
        }
    }
}

Мне пришлось удалить блог try / catch, чтобы метод всегда возвращал значение. Если вам абсолютно необходим блок try / catch, вам нужно вернуть пустой DataSet в конце метода, чтобы правильно скомпилировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...