Я разрабатываю базовую веб-форму, которая позволяет пользователям искать определенные столбцы в базе данных и отображать эти записи в GridView.У меня есть несколько элементов управления TextBox, которые позволяют пользователям искать имя, идентификатор и т. Д. Я использую LinqToSql для своего слоя доступа к данным.Это ваша основная форма поиска.
Проблема связана с GridView, который я пытаюсь использовать для отображения данных.У меня есть сам запрос в методе события OnClick элемента управления Button.
protected void SearchSpecific_Click(object sender, EventArgs e)
{
MyDataContext dbContext = new MyDataContext();
var results = from row in dbContext.MyTable
select row;
if(TextBoxIsValid(IDNumber))
results = results.Where(m => m.ID == Int32.Parse(IDNumber.Text));
if (validationFlag)
{
// this part doesn't seem right
SearchResultDataset.DataSource = results;
SearchResultDataset.DataBind();
}
}
Вот сетка, хотя в этом нет ничего особенного:
<asp:GridView ID="SearchResultDataset" runat="server"
AlternatingRowStyle-CssClass="alt"
CssClass="search_results"
GridLines="None"
AutoGenerateColumns="true"></asp:GridView>
Все идет гладко, пока я не доберусь доМетод DataBind () и исключение NullReferenceException.Святые исключения, Бэтмен!
Отладчик говорит мне, что результаты имеют правильные значения, но я чувствую, что это связано с привязкой источников данных при обратной передаче.Я чувствую, что что-то упустил ... Есть предложения?При необходимости я могу предоставить трассировку стека.
РЕДАКТИРОВАТЬ:
Существует гораздо более серьезная проблема под рукой.Я попытался добавить на свою страницу оба элемента управления LinqDataSource и ObjectDataSource, и оба выбросили исключение NullReferenceException.Я сконструировал оба с использованием графического интерфейса, и они выглядят идеально.
После этого я затем назначил источник данных в методе Page_Load:
try
{
MyDataContext dbc = new MyDataContext();
SearchResultDataset.DataSource = dbc.MyTable;
SearchResultDataset.DataBind();
}
catch (Exception ex)
{
errText.InnerHtml = ex.ToString();
}
Пришел с этим исключением:
System.Reflection.TargetInvocationException: Property accessor 'IsPostBack' on object 'MySite.MySite' threw the following exception:'Object reference not set to an instance of an object.' ---> System.NullReferenceException: Object reference not set to an instance of an object.
в System.Web.UI.UserControl.get_IsPostBack ()
Исключение определенно вызывается в методе DataBind ().Это поднимает вопрос, что происходит WTF?Я не могу связать источник linqtosql с моим GridView.Кажется, я не могу найти страницу, но где-то читал, что GridView испытывает трудности с привязкой к чему-либо, что не является объектом DataSet.
UPDATE
Используется SqlDataSourceконтроль доступа к базе данных.