Как передать значение Textbox в SQLDataSource и Fire MessageBox на основе результата запроса? - PullRequest
1 голос
/ 07 октября 2011

Я создал простую форму, которая содержит текстовое поле, предлагающее пользователю ввести идентификатор. В форме есть кнопка отправки и 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>

Я видел примеры, когда в codebehind установлено соединение SQl. Это необходимо, или вышеупомянутый SQLDataSource позаботится об этом? Может кто-нибудь поделиться хорошими ссылками на создание окон сообщений на основе результатов запроса? В моем случае, если «Рекомендовано» равно 1, тогда нужно будет показать сообщение 1, если «Рекомендовано» 2, то должно быть показано сообщение 2. Если идентификатор пользователя недействителен, необходимо показать третье сообщение. Как мне это сделать?

UPDATE:
В своем коде я написал следующее:

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, в противном случае выведите «Message 2» в lable1.text

Ответы [ 3 ]

1 голос
/ 07 октября 2011

Вы можете попробовать использовать событие OnSelecting для изменения параметров:

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters["Arg1"].Value = TextBox1.Text;
}
1 голос
/ 07 октября 2011

Вы должны будете выполнить эту работу в коде, независимо от того, используете ли вы SqlDataSource или SqlConnection напрямую, зависит от вас.Но SqlDataSource не имеет возможности напрямую взаимодействовать с библиотеками javascript или javascript.

0 голосов
/ 02 марта 2017

Это очень поздний ответ, но для тех, кто все еще смотрит @ this

. Это показывает, как привязать значение Texbox к источнику данных и автоматически обновить его после изменения значения текстового поля

  1. удалите selectpara, и вам не нужен код, стоящий за
  2. , просто установите AutoPostBack = "True" для текстового поля, чтобы при вводе пользователем текста выйти из него (или добавить фиктивную кнопку поискав этом случае btnSubmit и значение autopostback равно true) оно сработает, и источник данных обновит

  3. , измените команду выбора источника данных, удалив предложение where из Patientid, и добавьте к нему фильтр:

SelectCommand = "SELECT [Рекомендуется], [PatientId] ОТ [Пациенты]" FilterExpression = "PatientId = '{0}'"

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