1

これに関するヘルプは大歓迎です。プログラムを実行するたびに、NullReferenceException was unhandled by user code が発生します。

そのため、プログラムを起動すると、名前のリストから選択して詳細を更新または削除できるフォームが表示されますが、ドロップダウンリストには何も表示されません。

次の場所で null 参照を取得します。

comm.Parameters["@EmployeeID"].Value =
employeesList.SelectedItem.Value;

これは、CS ファイルの選択ボタンです。

protected void selectButton_Click(object sender, EventArgs e)
{
    // Declare objects
    SqlConnection conn;
    SqlCommand comm;
    SqlDataReader reader;
    // Read the connection string from Web.config
    string connectionString =
        ConfigurationManager.ConnectionStrings[
        "HelpDesk"].ConnectionString;
    // Initialize connection
    conn = new SqlConnection(connectionString);
    // Create command
    comm = new SqlCommand(
        "SELECT FirstName, LastName, Username, Address, City, County, Post Code, " +
        "HomePhone, Extension, MobilePhone FROM Employees " +
        "WHERE EmployeeID = @EmployeeID", conn);
    // Add command parameters
    comm.Parameters.Add("@EmployeeID", System.Data.SqlDbType.Int);
    comm.Parameters["@EmployeeID"].Value =
        employeesList.SelectedItem.Value;
    // Enclose database code in Try-Catch-Finally
    try
    {
        // Open the connection
        conn.Open();
        // Execute the command
        reader = comm.ExecuteReader();
        // Display the data on the form
        if (reader.Read())
        {
            firstnameTextBox.Text = reader["FirstName"].ToString();
            lastnameTextBox.Text = reader["lastName"].ToString();
            userNameTextBox.Text = reader["Username"].ToString();
            addressTextBox.Text = reader["Address"].ToString();
            cityTextBox.Text = reader["City"].ToString();
            countyTextBox.Text = reader["county"].ToString();
            postcodeTextBox.Text = reader["Post Code"].ToString();
            homePhoneTextBox.Text = reader["HomePhone"].ToString();
            extensionTextBox.Text = reader["Extension"].ToString();
            mobilePhoneTextBox.Text = reader["MobilePhone"].ToString();
        }
        // Close the reader 
        reader.Close();
        // Enable the Update button
        updateButton.Enabled = true;
        // Enable the Delete button
        deleteButton.Enabled = true;
    }
    catch
    {
        // Display error message
        dbErrorLabel.Text =
            "Error loading the employee details!<br />";
    }
    finally
    {
        // Close the connection
        conn.Close();
    }
}

そして、これはaspxファイルのコードです:

<p>
<asp:Label ID="dbErrorLabel" ForeColor="Red" runat="server" />
Select an employee to update:<br />
<asp:DropDownList ID="employeesList" runat="server" />
<asp:Button ID="selectButton" Text="Select" runat="server"
    onclick="selectButton_Click" />

4

3 に答える 3

6

ブレークポイントを次の場所に置きます。

comm.Parameters["@EmployeeID"].Value =
        employeesList.SelectedItem.Value;

プログラムを実行するときは、次の値を確認してください。

employeesList.SelectedItem

ほとんどの場合、アイテムが選択されていない場合、これは null になります。使用する前に null 値をチェックしてみてください:

 if (employeesList.SelectedItem != null)
 {
comm.Parameters["@EmployeeID"].Value =
    employeesList.SelectedItem.Value;
 }
 else
 {
// Handle this case
 }

お役に立てれば!

于 2013-03-28T21:34:10.720 に答える
0

最初に、データベースで使用可能なテーブルからドロップダウン リストにデータを入力する必要があります。

サンプル コード: Page_Load で、

if (!IsPostBack)
{
   ddlName.DataSource=ds;
   ddlName.DataValueField="ID";
   ddlName.DataTextField="NAME";
   ddlName.DataBind();
}
于 2013-07-18T05:45:09.247 に答える
0

ドロップダウン リストに項目が追加されていないようです。

あなたが持っている:

<p>
<asp:Label ID="dbErrorLabel" ForeColor="Red" runat="server" />
Select an employee to update:<br />
<asp:DropDownList ID="employeesList" runat="server" />
<asp:Button ID="selectButton" Text="Select" runat="server"
    onclick="selectButton_Click" />

ただし、ドロップダウン リストには次のような項目が必要です。

<asp:DropDownList ID="employeesList" runat="server">
    <asp:ListItem Text="Item 1" Value="1" Selected="true" />
    <asp:ListItem Text="Item 2" Value="2"/>
</asp:DropDownList>
于 2013-03-28T21:48:28.880 に答える