我并不习惯C#sharp,但之前使用过VB.NET。
我需要从查询中的数据设置文本字段,下拉列表等的值。要输入数据,我一直在使用类计算机,其方法是saveComputer(),它从用户控件获取值。现在我想要一个使用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 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
}
}
}
所以我想要实现的是使用Computer的getcomputer方法来设置Edit.aspx上控件的值
任何人都可以帮助我吗?
答案 0 :(得分: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
来正确编译。