1

私はC#でasp.netを使用しています。varcharアイテムのリストを持つドロップダウンリストがあり、テキストボックスがあります。ドロップダウンリストでアイテムを選択すると、テキストボックスに表示されます。これまでコードを試してみましたが、Null Reference Exception.

Patient ID:<asp:DropDownList ID="DropDownList1" runat="server" 
    DataSourceID="SqlDataSource1" DataTextField="PatientID" 
    DataValueField="PatientID">
</asp:DropDownList>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:ConStr %>"
    SelectCommand="SELECT [PatientID] FROM [Patient_Data] WHERE ([DummyValue] = @DummyValue)">
    <SelectParameters>
        <asp:Parameter DefaultValue="Y" Name="DummyValue" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

 Hospital No.:
    </td>
    <td>
        <asp:TextBox ID="HospNo" runat="server" ></asp:TextBox>
    </td>

C# の場合

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string pid = DropDownList1.SelectedItem.Text;
        HospNo.Text = pid.ToString();//Error in this line

        //other code
    }
 }

他の方法はありますか?任意の提案をいただければ幸いです。

4

5 に答える 5

3

ドロップダウン リストで、 AutoPostback属性をもう 1 つ追加し、以下に示すように true に設定します。

<asp:DropDownList ID="DropDownList1" runat="server" 
    DataSourceID="SqlDataSource1" DataTextField="PatientID" 
    DataValueField="PatientID" AutoPostback="true"></asp:DropDownList>

そして、あなたのコードはif(!IsPostback)条件付きで書かれています。以下に示すように、if 条件を削除するか、ドロップダウンの選択されたインデックス変更イベントから値を割り当てます。

ドロップダウンリスト :

<asp:DropDownList ID="DropDownList1" runat="server" 
    DataSourceID="SqlDataSource1" DataTextField="PatientID" 
    DataValueField="PatientID" AutoPostback="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>

コードビハインド:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
   HospNo.Text = DropDownList1.SelectedItem.Text;
}
于 2013-11-08T05:04:45.310 に答える
1

ToString()にする必要はありません。stringすでにstringです。

SelectedItem次のように、ポストバックごとにテキストボックスのテキスト値を設定する前に、ドロップダウンリストとText実際に何かがあるかどうかを確認してください。

// Check to see if the selected item of the drop down list is something or not
if(DropDownList1.SelectedItem != null)
{
    if(!String.IsNullOrEmpty(DropDownList1.SelectedItem.Text)
    {
        HospNo.Text = DropDownList1.SelectedItem.Text;
    }
}

//other code

注: このロジックは、選択された項目がサーバーへの各投稿に存在するかどうかを確認し、ドロップダウン リストに選択された項目がある場合にのみテキスト値を表示します。

于 2013-11-08T05:04:43.937 に答える
1
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DropDownList1.AutoPostBack= true;
        string pid = DropDownList1.SelectedItem.Text;
        HospNo.Text = pid.ToString();//Error in this line

        //other code
     }
 }
于 2013-11-08T05:31:58.057 に答える
0

このコードをドロップダウン変更イベント内に配置する必要があります。

変更イベントを登録する

<asp:DropDownList ID="DropDownList1" runat="server" OnChange="DropDownList1_Change"
    DataSourceID="SqlDataSource1" DataTextField="PatientID" 
    DataValueField="PatientID">
</asp:DropDownList>

コードビハインド

protected void DropDownList1_Change(object sender, EventArgs e)
{

        string pid = DropDownList1.SelectedItem.Text;
        HospNo.Text = pid.ToString();//Error in this line

}

これは、Jquery/Javascript を使用してクライアント側でも簡単に実行できます。

于 2013-11-08T05:07:18.863 に答える