2012-09-30 150 views
-1

我有一个内容VB页面,我尝试以编程方式更改SqlDataSource中的选择。为什么这个Label.Text不起作用?

我的代码:

<asp:Content ID="Content6" ContentPlaceHolderID="MainContent" Runat = "server"> 
<table width="630"> 
<tr> <td> 
Dim Label2 As New Label() 
Label2.Text = "Bro" 
</td> 

<td> 

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT * FROM [Docs1] WHERE ([Type] = @Type)"> 
<SelectParameters> 
<asp:ControlParameter Name="Type" 
ControlID="Label2" 
PropertyName="Text" 
    /> 

</SelectParameters> 

</asp:SqlDataSource> 
</td> 
<td> 
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
DataSourceID="SqlDataSource2" CellPadding="4" ForeColor="#333333" 
GridLines="None" Font-Names="Arial" 
> 

<AlternatingRowStyle BackColor="White" Font-Size="XX-Small" Font-Bold="False" 
ForeColor="#284775" Font-Names="Times New Roman" Font-Underline="False" /> 

<Columns> 
    ....... 
</asp:GridView> 

的SqlDataSource没有得到Label2.Text。我做得不对? 我必须在页面上多次更改选择参数(从“BLah1”到“Blah2”等),而无需用户执行任何操作,因此没有按钮等,除了page_Load之外基本上没有任何事件。我想使用不可见标签并更改其文本,并以这种方式更改选择。

回答

0

您还应该将标签添加到表单并设置其ID属性。即

Dim Label2 As New Label() 
Label2.ID = "Label2" 
Form.Controls.Add(Label2) 
Label2.Text = "Bro" 
+0

Thaks柏拉图,但现在它说: – user1692508

+0

感谢柏拉图,但现在它说 - 无法找到控制参数“类型”控制“Label2的” – user1692508

+0

最有可能的,你的标签定位的用户控件或任何其他作INamingContainer内目的。这意味着它的UniqueID不会是Label2,因此控件无法在表单上由ASP.NET找到。可能的解决方案是更改参数的ControlID属性并将其映射到Label的UniqueID。第二个想法是,在执行绑定过程后,您太晚创建标签。请尝试在Page_Load方法中创建标签。 – platon