#c# #asp.net #ado.net
#c# #asp.net #ado.net
Вопрос:
У меня возникла некоторая проблема с моим назначением. Я пытаюсь установить значение для выпадающего списка в GridView при редактировании данных в этом. Но когда я отправил свое задание своему другу, он сказал мне, что может выполнить его без ошибок (он использует Visual Studio 2010). Я использую Visual Studio 2008 и 2010, но я не могу запустить свой код. Пожалуйста, помогите мне.
SqlConnection cn=new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["cn"].ToString());
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
LoadProduct();
}
}
public DataSet LoadCategory()
{
SqlDataAdapter da = new SqlDataAdapter("select * from categories", cn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
private void LoadProduct()
{
//throw new NotImplementedException();
SqlDataAdapter da=new SqlDataAdapter("select * from products,categories where products.categoryID=categories.categoryID",cn);
DataTable db=new DataTable();
da.Fill(db);
GridView1.DataSource=db;
GridView1.DataBind();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
LoadProduct();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Literal ltr=GridView1.Rows[e.NewEditIndex].FindControl("Literal1") as Literal;
string categoryname = ltr.Text;
GridViewRow row=GridView1.Rows[e.NewEditIndex];
LoadProduct();
DropDownList ddl = row.Cells[3].Controls[1] as DropDownList;
ddl.DataSource = LoadCategory().Tables[0];// when I run there is a error. "Object reference not set to an instance of an object"
ddl.DataTextField = "categoryName";
ddl.DataValueField = "categoryID";
ddl.DataBind();
ddl.Items.FindByText(categoryname).Selected = true;
}
Комментарии:
1. И почему вы не можете его запустить? Пожалуйста, предоставьте нам исключение.
2. Назначение? Это домашнее задание?
Ответ №1:
Попробуйте это
ddl.ClearSelection();
ddl.Items.FindByText(categoryname).Selected = true;
Ответ №2:
разве вы не можете сделать это подобным образом при поиске вашего DDL?
DropDownList ddl = GridView1.Rows[e.NewEditIndex].FindControl("ddl") as DropDownList;
ddl.DataSource = LoadCategory().Tables[0];