Привет, ребята,
У меня ошибка, которую я не могу устранить на веб-сайте ASP.NET.
Одна из его страниц - Country.aspx, имеет следующие элементы управления:
- CheckBox, называемый "CheckBoxNAME":
< asp:CheckBox ID="CheckBoxNAME" runat="server" Text="Name" />
- TextBox с именем "TextBoxName":
< asp:TextBox ID="TextBoxNAME" runat="server" Width="100%" Wrap="False"> < /asp:TextBox>
- SQLDataSource с именем "SqlDataSourceCOUNTRIES", который выбирает все записи из таблицы с 3 столбцами - ID (номер, PK), NAME (Varchar2 (1000)) и POPULATION (число) с именем COUNTRIES
< asp:SqlDataSource
ID="SqlDataSourceCOUNTRIES"
runat="server"
ConnectionString="< %$ ConnectionStrings:myDB %> "
ProviderName="< %$ ConnectionStrings:myDB.ProviderName %> "
SelectCommand="SELECT COUNTRIES.ID, COUNTRIES.NAME, COUNTRIES.POPULATION FROM COUNTRIES ORDER BY COUNTRIES.NAME, COUNTRIES.ID">
< /asp:SqlDataSource>
- GridView с именем GridViewCOUNTRIES:
< asp:GridView
ID="GridViewCOUNTRIES"
runat="server"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False"
DataSourceID="SqlDataSourceCOUNTRIES"
DataKeyNames="ID"
DataMember="DefaultView">
< Columns>
< asp:CommandField ShowSelectButton="True" />
< asp:BoundField DataField="ID" HeaderText="Id" SortExpression="ID" />
< asp:BoundField DataField="NAME" HeaderText="Name" SortExpression="NAME" />
< asp:BoundField DataField="POPULATION" HeaderText="Population" SortExpression="POPULATION" />
< /Columns>
< /asp:GridView>
- Кнопка под названием ButtonFilter:
< asp:Button ID="ButtonFilter" runat="server" Text="Filter" onclick="ButtonFilter_Click"/>
Это событие onclick:
protected void ButtonFilter_Click(object sender, EventArgs e)
{
Response.Redirect("Countries.aspx?" +
(this.CheckBoxNAME.Checked ? string.Format("NAME={0}", this.TextBoxNAME.Text) : string.Empty));
}
Кроме того, это главное событие загрузки страницы:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
if (Request.QueryString.Count != 0)
{
Dictionary parameters = new Dictionary();
string commandTextFormat = string.Empty;
if (Request.QueryString["NAME"] != null)
{
if (commandTextFormat != string.Empty && commandTextFormat.EndsWith("AND") == false)
{
commandTextFormat += "AND";
}
commandTextFormat += " (UPPER(COUNTRIES.NAME) LIKE '%' || :NAME || '%') ";
parameters.Add("NAME", Request.QueryString["NAME"].ToString());
}
this.SqlDataSourceCOUNTRIES.SelectCommand = string.Format("SELECT COUNTRIES.ID, COUNTRIES.NAME, COUNTRIES.POPULATION FROM COUNTRIES WHERE {0} ORDER BY COUNTRIES.NAME, COUNTRIES.ID", commandTextFormat);
foreach (KeyValuePair parameter in parameters)
{
this.SqlDataSourceCOUNTRIES.SelectParameters.Add(parameter.Key, parameter.Value.ToUpper());
}
}
}
}
Как правило, страница отображает в GridViewCOUNTRIES все записи таблицы СТРАН.
Сценарий следующий:
- пользователь проверяет CheckBox;
- пользователь вводит значение в TextBox (скажем, «ch»);
- пользователь нажимает кнопку;
- страница загружается с отображением только тех записей, которые соответствуют критериям фильтра (в данном случае все страны, названия которых содержат «Ch»);
- пользователь нажимает на заголовок столбца с именем «Имя», чтобы отсортировать данные в GridView
Затем я получаю следующую ошибку: ORA-01036: недопустимое имя / номер переменной.
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Data.OracleClient.OracleException: ORA-01036: недопустимое имя / номер переменной
Ошибка источника: необработанное исключение было сгенерировано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.
Любая помощь с благодарностью, тнкс.
PS: я использую ASP.NET 3.5 под Visual Studio 2008 с базой данных OracleXE.