[英]Remove combo box item c#
我試圖刪除檢查數據庫中的“管理員”文本后的組合框項目列表“管理員”文本,如果找到了,那么它會簡單地從下拉列表菜單中刪除。
現在,即使數據庫中有“管理員”文本,組合框仍將“管理員”文本添加到項目列表中。
某個地方錯了嗎?
這是我正在使用的代碼:
public partial class Registration: Form
{
bool _isCheckedEmail = false;
void Registration_Load(object sender, EventArgs e)
{
ClearTextBoxes();
SystemManager.CheckType("Administrator");
if (SystemManager._isUsed != true)
{
this.comboBox1.Items.Add("Administrator");
}
this.comboBox1.Items.Add("Member");
this.comboBox1.SelectedIndex = 0;
SystemManager._isCheckedDisplayName = false;
_isCheckedEmail = false;
this.button1.Enabled = false;
this.button4.Enabled = false;
}
}
這是“ SystemManager”類:
public class SystemManager
{
public static bool _isUsed = false;
public static void CheckType(string _value1)
{
using (OleDbConnection connection = new OleDbConnection(SystemManager.connectionString))
{
string query = "SELECT COUNT(*) FROM [Member] WHERE [UserType] = @UserType";
connection.Open();
using (OleDbCommand command = new OleDbCommand(query, connection))
{
command.Parameters.Add("@UserType", OleDbType.VarChar);
command.Parameters["@UserType"].Value = _value1;
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (_count > 0)
{
_isUsed = true;
}
else
{
_isUsed = false;
}
}
reader.Close();
}
}
connection.Close();
}
}
}
這是數據庫(我正在將其上傳到保管箱):
謝謝。
您可以通過reader[0]
引用結果對象。
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Integer.TryParse(reader[0].ToString(), _count);
if (_count > 0)
{
_isUsed = true;
}
else
{
_isUsed = false;
}
}
reader.Close();
}
使用OleDbDataReader.HasRows
屬性檢查類型是否存在。
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.hasrows(v=vs.110).aspx
string query = "SELECT * FROM [Member] WHERE [UserType] = @UserType";
connection.Open();
using (OleDbCommand command = new OleDbCommand(query, connection))
{
command.Parameters.Add("@UserType", OleDbType.VarChar);
command.Parameters["@UserType"].Value = _value1;
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (reader.HasRows)
{
_isUsed = true;
}
else
{
_isUsed = false;
}
}
reader.Close();
}
這是上述問題的解決方案:
void Registration_Load(object sender, EventArgs e)
{
SystemManager.ClearTextBoxes(this.Controls);
if (SystemManager.CheckType("Administrator") != true)
{
this.comboBox1.Items.Add("Administrator");
}
this.comboBox1.Items.Add("Member");
this.comboBox1.SelectedIndex = 0;
SystemManager._isCheckedDisplayName = false;
_isCheckedEmail = false;
this.button1.Enabled = false;
this.button4.Enabled = false;
}
public static bool CheckType(string _value1)
{
using (OleDbConnection connection = new OleDbConnection(SystemManager.connectionString))
{
string query = "SELECT COUNT(*) FROM [Member] WHERE [UserType] = @UserType";
connection.Open();
using (OleDbCommand command = new OleDbCommand(query, connection))
{
command.Parameters.Add("@UserType", OleDbType.VarChar);
command.Parameters["@UserType"].Value = _value1;
_count = (int)command.ExecuteScalar();
connection.Close();
}
}
return _count > 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.