我正在尝试将活动ID(RefNum)传递给我的代码隐藏中的Sub。我知道在将参数传递给子程序和方法时我应该使用括号,我尝试了很多方法并继续收到以下错误:
BC30203:预期的标识符。
我在前端硬编码只是为了试图让它通过[OnDataBound =“FillSectorCBList(”“”WK.002“”“)”],但这显然是错误的。 :(
前端:
<asp:DetailsView ID="dvEditActivity" AutoGenerateRows="False" DataKeyNames="RefNum" OnDataBound="dvSectorID_DataBound" OnItemUpdated="dvEditActivity_ItemUpdated" DataSourceID="dsEditActivity" >
<Fields>
<asp:TemplateField>
<ItemTemplate>
<br /><span style="color:#0e85c1;font-weight:bold">Sector</span><br /><br />
<asp:CheckBoxList ID="cblistSector" runat="server" DataSourceID="dsGetSectorNames" DataTextField="SectorName" DataValueField="SectorID" OnDataBound="FillSectorCBList("""WK.002""")" ></asp:CheckBoxList>
<%-- Datasource to populate cblistSector --%>
<asp:SqlDataSource ID="dsGetSectorNames" runat="server" ConnectionString="<%$ ConnectionStrings:dbConn %>" ProviderName="<%$ ConnectionStrings:dbConn.ProviderName %>" SelectCommand="SELECT SectorID, SectorName from Sector ORDER BY SectorID"></asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
代码隐藏:
Sub FillSectorCBList(ByVal RefNum As String,ByVal sender As Object,ByVal e As System.EventArgs) Dim SectorIDs为New ListItem
Dim myConnection As String = ConfigurationManager.ConnectionStrings("dbConn").ConnectionString()
Dim objConn As New SqlConnection(myConnection)
Dim strSQL As String = "SELECT DISTINCT A.RefNum, AS1.SectorID, S.SectorName FROM Activity A LEFT OUTER JOIN Activity_Sector AS1 ON AS1.RefNum = A.RefNum LEFT OUTER JOIN Sector S ON AS1.SectorID = S.SectorID WHERE A.RefNum = @RefNum ORDER BY A.RefNum"
Dim objCommand As New SqlCommand(strSQL, objConn)
objCommand.Parameters.AddWithValue("RefNum", RefNum)
Dim ad As New SqlDataAdapter(objCommand)
Try
[Code]
Finally
[Code]
End Try
objCommand.Connection.Close()
objCommand.Dispose()
objConn.Close()
End Sub
任何建议都会很棒。我不确定我是否有正确的方法。
谢谢!
答案 0 :(得分:1)
您无法将参数传递给OnDataBound事件方法。该方法必须遵循特定签名。由于这个参数本质上是一个程序常量,我只是将它编码到方法中或从某个地方读取它。当然,您也可以使用处理事件的方法调用接受参数的其他方法。
答案 1 :(得分:1)
更改您的
OnDataBound="FillSectorCBList("""WK.002""")"
到
OnDataBound='FillSectorCBList("WK.002")'
虽然这会处理标识符预期的错误,但在我提交之前,Joel会发布另一个很可能导致另一个错误。
答案 2 :(得分:0)
正如其他人发布的那样,您是否无法为此目的使用OnDataBound事件。您需要将DataSource属性设置为所需的方法。
DataSource='FillSectorCBList("WK.002")'
请注意,您无法同时设置DataSource和DataSourceID属性。您可能还需要手动执行.DataBind()。