Gridview на странице управления пользователем (ascx) имеет значение null

У меня есть страница, откуда пользователь может искать предметы и так далее. Я использую страницу.ascx для отображения результата в grdview.

Страница aspx имеет только поле seacrh и кнопку, и при нажатии кнопки я хочу передать значение из текстового поля на страницу ascx и заполнить вид сетки результатом. Но после отладки я обнаружил, что после нажатия кнопки gridview становится равным нулю. Все остальные значения есть, и результат возвращается из базы данных.

Может кто-нибудь, пожалуйста, помогите. Я искал решение в течение последних нескольких часов и пробовал несколько разных вещей, но все еще нигде не получил.

заранее спасибо

РЕДАКТИРОВАТЬ

Вот мой код

Это страница aspx.

<%@ Register Src="Search.ascx" TagName="Search" TagPrefix="uc1" %>
    <form id="form1" runat="server">
        <div class="content">
            <div style="padding:5px;">
                <b>Search</b>: <asp:TextBox runat="server" ID="txtSearch" />
                <asp:RequiredFieldValidator ErrorMessage="*" ValidationGroup="SearchGroup" ControlToValidate="txtSearch" ID="RequiredFieldValidator1"
                    runat="server" />
            </div>
            <div style="padding:5px;">
                <asp:Button Text="Search" runat="server" ValidationGroup="SearchGroup" OnClick="btnSearch_Click" ID="btnSearch" />
            </div>
        </div>
        <asp:ScriptManager runat="server" />
        <asp:UpdatePanel runat="server">
            <ContentTemplate>
                <div class="Results">
                    <uc1:Search ID="UserControl1" runat="server" />
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>

    </form>

На странице ASCX у меня есть следующее

Код позади

Dim test As Object = txtSearch.Text

Dim StockList As cls_Stock_Col = MyLOTSDB.LoadStock_Col()
Try
    Dim dt As DataTable = New DataTable()
    Dim dcol As New DataColumn("TradeName", GetType(System.String))
    dt.Columns.Add(dcol)

    'Create an ID column for adding to the Datatable
    dcol = New DataColumn("PackSize", GetType(System.String))
    dt.Columns.Add(dcol)

    dcol = New DataColumn("PLU", GetType(System.String))
    dt.Columns.Add(dcol)

    dcol = New DataColumn("SOH", GetType(System.String))
    dt.Columns.Add(dcol)

    dcol = New DataColumn("RetailAsCurrency", GetType(System.String))
    dt.Columns.Add(dcol)

    For Each col As DataColumn In dt.Columns
        'Declare the bound field and allocate memory for the bound field.
        Dim bfield As New BoundField()
        'Initalize the DataField value.
        bfield.DataField = col.ColumnName
        'Initialize the HeaderText field value.

        Dim DisplayName As String = ""
        Dim DataFormat As String = ""
        Dim FieldType As Type = col.GetType()
        Dim StringLength As Int32

        GetFieldDetails(TheType, col.ColumnName, DisplayName, DataFormat, FieldType, StringLength)
        bfield.HeaderText = DisplayName

        If (DataFormat = "$0.00") Then
            bfield.DataFormatString = "{0:C2}"
        End If


        bfield.SortExpression = "col.ColumnName"
        'Add the newly created bound field to the GridView.
        GridView1.Columns.Add(bfield)
    Next

    GridView1.DataSource = StockList
    GridView1.DataBind()
Catch ex As Exception

End Try

Я могу отладить и выдается ошибка, когда я пытаюсь добавить столбец в gridview,

еще раз спасибо

2 ответа

The aspx page only has a seacrh box and a button and on 
button click I want to pass the value from inside the textbox to the ascx page

Вы можете сделать это, указав публичное свойство в вашем элементе управления ascx, к которому вы можете получить доступ на вызывающей странице.

Внутри вашего кода ASCX позади

private string searchText ;
Public string SetSearchText
{
      get { return searchText; }
      set { return searchText; }   
}  

На странице вызова по нажатию кнопки просто установите свойство элемента управления ascx

Внутри вашей главной страницы при нажатии кнопки

YourAscxControl.SetSearchText= yourTextBox.Text.Trim();

Пользовательский динамический контент-заполнитель.

Обратитесь к следующим ссылкам, они могут помочь: -

http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx http://www.codeproject.com/Articles/18080/Solve-Dynamic-Control-Problem-With-PostBack

Другие вопросы по тегам