我正在一个小型项目中工作,我正在使用主窗体中显示的userControl。我正在使用一个允许访问数据库的Model类,如下所示:
public void InsertRoute(Route route)
{
string routecode = route.RouteCode.ToString();
string vehiclecode = route.VehicleCode.ToString();
string firsstudentname = route.FirstStudentName.ToString();
using (SqlCommand cmd = new SqlCommand("InsertRoute2", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@RouteCode", routecode));
cmd.Parameters.Add(new SqlParameter("@VehicleCode", vehiclecode));
cmd.Parameters.Add(new SqlParameter("@FirstStudentName", firsstudentname));
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
然后我有一个名为UCCreateRotue的用户控件,它有几个文本框和按钮单击事件处理程序:
private void btnCreateRoute_Click_1(object sender, EventArgs e)
{
UCRouteCreate form = new UCRouteCreate();
//DialogResult dialog = form.ShowDialog();
//if (dialog == DialogResult.OK)
//{
Route route = controller.CreateMovieFromText(form);
controller.InsertRoute(route);
//RefreshTable();
//}
}
然后我有一个名为route的类,如下所示
class Route
{
private GlobalReach.UserControls.UCRouteCreate usrCon;
public string RouteCode
{
get { return usrCon.txtRouteCode.Text ;}
set { usrCon.txtRouteCode.Text = value ; }
}
}
然后我在控制器中有一个方法,如下所示,执行通过sproc
完成的插入 public Route CreateRouteFromText(UCRouteCreate form)
{
string routecode =form.txtRouteCode.Text.ToString();
string vehiclecode = form.txtVehicleCode.Text.ToString();
string firststudentname = form.txtFStudent.Text.ToString();
Route route = new Route();
return route;
}
我的问题是,当我点击按钮点击代码正在工作,因为我有新行插入我的表,但有空值,即值输入为没有(如果这有任何意义)和字段,我dd不选择填写输入为NULL值..? 你可以告诉我为什么当我在我的usrControl TextBox中输入值时,我的代码中没有捕获到这个值。 提前谢谢你
答案 0 :(得分:0)
按钮单击事件创建一个空表单,您已注释掉显示对话框行,因此输入仍为空(除非您将它们初始化为任何内容,但即便如此)。在CreateRouteFromText中,将表单值分配给局部变量,然后创建一个空的Route对象并将其传递回insert方法。所以你有空行并不奇怪。
至少应该将Route对象设置为表单所具有的内容:
public Route CreateRouteFromText(UCRouteCreate form)
{
return new Route()
{
RouteCode = form.txtRouteCode.Text,
VehicleCode = form.txtVehicleCode.Text,
FirstStudentName = form.txtFStudent.Text
}
}