如何根据查询结果将Textbox值传递给SQLDataSource和Fire MessageBox?

时间:2011-10-07 18:17:17

标签: asp.net sqldatasource

我创建了一个简单的表单,其中包含一个文本框,提示用户输入ID。表单上有一个提交按钮和一个SQLDataSource,它将文本框值连接起来作为查询的参数。

<fieldset>
<asp:Label runat="server" ID="lblAcctNo">Please enter the account number:</asp:Label>
<asp:TextBox runat="server" ID="txtAcctNo"></asp:TextBox>
<asp:Button runat="server" ID="btnSubmit" Text="Submit" />
</fieldset>

<asp:SqlDataSource ID="sdsMMSPts" runat="server" 
ConnectionString="<%$ ConnectionStrings:mmsptsConnectionString %>" 

SelectCommand="SELECT [Recommended], [PatientId] FROM [Patients] WHERE ([PatientId] = @PatientId)">
<SelectParameters>
    <asp:ControlParameter ControlID="txtAcctNo" Name="PatientId" 
        PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>

我见过在代码隐藏中建立SQl连接的示例。这是必要的,还是上面的SQLDataSource会处理这个?任何人都可以根据查询结果分享一些创建消息框的好链接吗?在我的情况下,如果推荐为1则需要显示消息1,如果Reccommended为2,则需要显示消息2。如果UserID无效,则需要显示第三条消息。我该如何做到这一点?

更新:
在我的代码隐藏中,到目前为止我写了以下内容:

protected void Page_Load(object sender, EventArgs e)
    {
        string connString = System.Configuration.ConfigurationManager.ConnectionStrings
        ["mmsptsConnectionString"].ConnectionString;

        SqlConnection sqlconn = new SqlConnection(connString);
        sqlconn.Open();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = connString;
        cmd.CommandType = SqlDataSourceCommandType.StoredProcedure;
        cmd.Parameters.Add(new SqlParameter ("@PatientId", SQLDbType.varchar ));

        using (var reader = cmd.ExecuteReader()) 
        {while reader.Read()
                    txtAcctNo.Text=cmd.Parameters("@PatientId")
        }

    }

我的目的是调用我的存储过程并在binindg @PatientId之后将结果返回到txtAcctNo.Text。我对SqlClient的东西有点生疏,从我的存储过程中获取结果还需要哪些步骤?其中一个输出参数是@Recommended,它是一个位域。如何评估参数值并根据此参数的值触发消息框警报或标签控件?例如,如果@Recommended = 1则输出“Message 1”到label1.text else输出“Message 2”到lable1.text

3 个答案:

答案 0 :(得分:1)

您必须在代码隐藏中完成这项工作,无论您使用SqlDataSource还是直接使用SqlConnection取决于您。但是SqlDataSource无法直接与javascript或javascript库进行交互。

答案 1 :(得分:1)

您可以尝试使用OnSelecting事件修改参数:

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters["Arg1"].Value = TextBox1.Text;
}

答案 2 :(得分:0)

这是一个非常晚的回应,但对于那些仍然看着@ this

的人

这是为了说明如何将Texbox Value绑定到数据源并在修改文本框值后对其进行自动刷新

  1. 删除selectpara,您不需要背后的代码
  2. 设置AutoPostBack =&#34; True&#34;到文本框,所以当用户键入它然后退出它(或在这种情况下添加一个虚拟搜索按钮btnSubmit并将autopostback设置为true)它将触发并且数据源将刷新

  3. 通过删除patientid的where子句并向其添加过滤器来修改数据源select命令:

  4. SelectCommand =&#34; SELECT [推荐],[PatientId]来自[患者]&#34; FilterExpression =&#34; PatientId =&#39; {0}&#39;&#34;

         <FilterParameters>
            <asp:ControlParameter Name="PatientId" ControlID="txtAcctNo" />
        </FilterParameters>