当ASPxGridView控件内部正在进行数据绑定时,ASCX文件上的公共属性变为空
本文关键字:属性 文件 ASCX 内部 控件 ASPxGridView 正在进行 数据 定时 绑定 | 更新日期: 2023-09-27 17:49:20
我有一个ASCX
控件,我在aspx
页面内动态加载。我使用public
属性将参数传递给我的ASCX
控件,并且我能够在OnInit
事件中捕获它。
在ASCX
文件中,我有一个ASPxGridView
控件,其中我使用ObjectDataSource
来获取数据。
当ASPxGridView
控件绑定数据时,已经设置的属性现在的值变为NULL
。由于属性是ID
,我需要访问一些SQL
表,数据绑定失败。
我相信我做的事情不正确,为什么public
属性变成null
?
我应该做些什么来预防它?
谢谢
我认为你面临这个问题是因为ViewState
。ViewState
只检索同一页面的数据。如果导航到其他页面,则在页面加载事件中该值变为空。因此,您可以使用SESSION STATE
变量来代替ViewState
。
SESSION
也用于存储数据,但这样做的好处是,即使在页面导航之后,您也可以获得数据。
//TO pass data in acxs control
Public Property DDLItemFilter() As String
Get
Return ViewState("P_DDLItemFilter")
End Get
Set(ByVal Value As String)
ViewState("P_DDLItemFilter") = Value
End Set
End Property
// to use this function in ascx control
Sub Bind_Grid()
Dim SearchVal As String = MakeQueryString(txt.Text)
lssql = " Select ApplNo,dbo.Fnc_LocName(CompCode,YearCode,TenantBranch) As TenantBranch from PropAllocAppl " & _
"Where COMPCODE='" & compcode & "' And YEARCODE='" & yearcode & "'"
lssql = lssql & " And ApplNo Like '" & SearchVal.Trim & "%' "
If ViewState("P_DDLItemFilter") <> "" Then
lssql = lssql & " And " & ViewState("P_DDLItemFilter") & " "
End If
lssql = lssql & " Order By ApplNo "
Dim dq As New DbQuery(lssql, True)
Dim dt As DataTable = dq.GetTable
DataGrid_ddl.DataSource = dt
DataGrid_ddl.DataBind()
End Sub
//pass data from aspx page and the id of the control is "UC_ApplCode1"
UC_ApplCode1.DDLItemFilter = " PropAllocAppl.AssetType not in ('B','V') "
//in same way get the data from ascx control
Public Function getDDLText() As String
Return (Trim(txt1.Text))
End Function
//you got the data in aspx page just calling this function with that .ascx id
string abc=UC_ApplCode1.getDDLText()
看起来你得到了一个参数,绑定了一个网格视图的数据,在page_load时刻发生了类似回发的事情,第二次你没有指定的参数。检查你的DataGridView AutoPostBack属性是否为false。或者,如果您需要回发,保存参数(ID)到某个地方,如Session等