将DropDownList值提供给存储过程VB.NET

问题描述

我有一个MysqL存储过程,该存储过程具有一个输入参数,即从下拉列表中选择的位置。在.aspx文件中手动声明下拉列表项时,它可以正常工作,但是当我希望下拉列表从列中读取值时,存储过程不会接收该参数。

我有多个名为t_location的表,从下拉列表中选择了位置,但出现错误'表t_'不存在

当我创建两个存储过程时,一个在内部(t_location1)定义了第一个位置,另一个具有location参数,并且仅在回发时使用了第二个,它也可以正常工作。

我应该添加什么到页面加载子项中,以在第一次加载下拉菜单中为存储过程提供第一个位置吗?

    <asp:DropDownList ID="dd_lokacija_naslovna" runat="server" AutopostBack="True" DataSourceID="sqlDataSource1" DataTextField="lokacija" DataValueField="lokacija"></asp:DropDownList>
    <asp:sqlDataSource ID="sqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:hostConnStr %>" ProviderName="<%$ ConnectionStrings:hostConnStr.ProviderName %>" SelectCommand="select lokacija from t_kontrole"></asp:sqlDataSource>

隐藏代码

Dim cmdpb = New MysqLCommand()
Dim rdr As MysqLDataReader

conn.open()

cmdpb = New MysqLCommand("sp_naslovna_vrijednosti_pb",conn)
cmdpb.CommandType = CommandType.StoredProcedure
cmdpb.Parameters.AddWithValue("@tname",dd_lokacija_naslovna.SelectedValue)

    rdr = cmdpb.ExecuteReader

If rdr.Read Then

    hum1 = Convert.Todouble(rdr.GetString("hum"))
    moist1 = Convert.Todouble(rdr.GetString("moist"))
    temp1 = Convert.Todouble(rdr.GetString("temp"))

    Dim tempSpan As HtmlGenericControl = Page.FindControl("temp")
    tempSpan.InnerText = temp1.ToString()
    Dim humSpan As HtmlGenericControl = Page.FindControl("hum")
    humSpan.InnerText = hum1.ToString()
    Dim moistSpan As HtmlGenericControl = Page.FindControl("moist")
    moistSpan.InnerText = moist1.ToString()

End If

rdr.Close()
conn.Close()

sp

BEGIN
SET @x := CONCAT('SELECT * FROM t_mjerenje_',tname,' ORDER BY id_mjerenje DESC LIMIT 1');
Prepare stmt from @x;
Execute stmt;
DEALLOCATE PREPARE stmt;
END

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)