我创建了一个简单的表单,其中包含一个文本框,提示用户输入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
答案 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绑定到数据源并在修改文本框值后对其进行自动刷新
设置AutoPostBack =&#34; True&#34;到文本框,所以当用户键入它然后退出它(或在这种情况下添加一个虚拟搜索按钮btnSubmit并将autopostback设置为true)它将触发并且数据源将刷新
通过删除patientid的where子句并向其添加过滤器来修改数据源select命令:
SelectCommand =&#34; SELECT [推荐],[PatientId]来自[患者]&#34; FilterExpression =&#34; PatientId =&#39; {0}&#39;&#34;
<FilterParameters>
<asp:ControlParameter Name="PatientId" ControlID="txtAcctNo" />
</FilterParameters>