2010-09-24 60 views
0

我并不真正习惯于C#sharp,但之前使用过VB.NET。C#:帮助返回数据集并将值分配给控件

我需要设置来自查询数据的文本字段,下拉列表等的值。要输入数据,我一直在使用带有saveComputer()方法的类Computer,该方法从用户控件获取值。现在我想要一个使用来自url &的ID的编辑页面,它使用Computer类中的getComputer(id)并返回要设置为用户控件的值。我不确定使用这种方法来设置控制值。

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 [email protected]"; 

      //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方法来设置的值来实现Edit.aspx上的控件

任何人都可以帮我吗?

+0

当我们对你的数据库结构一无所知时,很难提供帮助,没有关于它的哪些部分是有趣的,也没有关于你想要赋值的控件。 – 2010-09-24 10:39:56

回答

1

你需要修改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以正确编译。

+0

谢谢!但我得到一个不是所有的代码路径现在从getComputer方法返回一个值错误 – iamjonesy 2010-09-24 11:06:18

+0

Do'h,我添加了getComputer的更新版本,总是返回一个值。 – 2010-09-24 11:38:52

相关问题