#c# #dataset
#c# #набор данных
Вопрос:
Я использую приведенный ниже код:
protected void grdViewCInfo_RowDataBound(object sender, GridViewRowEventArgs e)
{
MySqlConnection objMycon1 = new MySqlConnection(strProvider);
objMycon1.Open();
MySqlCommand cmd1 = new MySqlCommand("select * from tblcountrynames",objMycon1);
MySqlDataAdapter da = new MySqlDataAdapter(cmd1);
DataSet ds = new DataSet();
da.Fill(ds);
// DropDownList Control Object Created to bind the data dynamically with each
// nested DropDownlist control placed inside the template column of the GridView
// Control.
DropDownList drdList;
// foreach loop is used to loop through each row of GridView Control.
foreach (GridViewRow grdRow in grdViewCInfo.Rows)
{
// Nested DropDownList Control reference is passed to the DrdList object.
// This will allow you access the properties of dropdownlist placed
// inside the GridView Template column.
drdList = (DropDownList)(grdViewCInfo.Rows[grdRow.RowIndex].FindControl("ddlCountry" ));
// DataBinding of nested DropDownList Control for each row of GridView Control.
drdList.DataSource = ds;
drdList.DataValueField = "ID";
drdList.DataTextField = "Name";
drdList.DataBind();
}
}
Выдает ошибку в виде:
Ссылка на объект не установлена на экземпляр объекта.
В строке drdList.DataSource = ds;
Как мне это исправить???
Ответ №1:
Попробуйте указать СТОЛБЕЦ в следующей строке кода:
drdList = (DropDownList)( grdViewCInfo.Rows[ grdRow.RowIndex ][ColumnIndex].FindControl( "ddlCountry" ));
Другой вариант — перебирать столбцы в другом foreach
Дополнительная информация на основе вашего комментария:
Похоже, вы новичок в ASP.NET вот почему я рекомендую следующее:
Используйте asp:TemplateColumn и поместите asp: выпадающий список в EditTemplate. Подключите выпадающий список к SqlDataSource (или любому другому источнику данных, который вы хотите использовать).
Привязка будет обработана за вас.
Я не могу развивать дальше, не видя вашего ASP.NET кодируем и узнаем больше о ваших требованиях.
Комментарии:
1. я включаю индекс столбца, поэтому ошибка исчезла, но выпадающий список отображается пустым при редактировании события
2. это не происходит внутри цикла, как я проследил
3. если это не происходило внутри цикла, как вы получили исключение NullReferenceException в drdList.DataSource = ds; ?
4. потому что в то время я не указывал столбец
5. тот факт, что он попал в эту строку кода, означает, что он входит в цикл, независимо от того, генерирует он исключение или нет, не имеет значения
Ответ №2:
Попробуйте это
DropDownList ddl;
int i = 0;
foreach (GridViewRow grdrow in grdmenu.Rows)
{
ddl = (DropDownList)grdmenu.Rows[grdrow.RowIndex].FindControl("ddloffer");
ddl.SelectedIndex = Convert.ToInt16(ds.Tables[0].Rows[i]["Offer"]);
ddl = (DropDownList)grdmenu.Rows[grdrow.RowIndex].FindControl("ddloffers");
ddl.SelectedIndex = Convert.ToInt16(ds.Tables[0].Rows[i]["OfferType"]);
i ;
ddl.DataBind();
}