У меня есть 3 флажка, идентификатор - chkIPP, chkOutReach и chkCCA. Когда пользователь устанавливает один из этих флажков, значение будет вставлено в поле столбца BlogType. Я хочу вставить 3 значения: истории IPP, OutReach Activities и CCA. Я хочу установить только один флажок. В поле столбца blogType будет вставлено только одно значение.

Я думаю, что приблизительный элемент управления должен быть переключателем или раскрывающимся списком, поскольку только один может быть выбран и вставлен в базу данных, но мой учитель сказал мне использовать флажок. Таким образом, пользователь будет вводить текстовое поле 3 и устанавливать один из флажков, и значения будут вставлены в базу данных. Я уже закодировал 3 текстовых поля. Остался с флажками. Спасибо

enter image description here

enter image description here

после предложения @serhads. Правильно ли я сделал? введите описание изображения здесь

protected void btnSubmit_Click(object sender, EventArgs e)
{
    string AdminNumber = Convert.ToString(txtAdmin.Text);
    string Name = Convert.ToString(txtName.Text);
    string BlogStory = Convert.ToString(txtStory.Text);

    insertGameRecord(AdminNumber, Name, BlogStory);
}

private void insertGameRecord(string admin, string name, string story)
{
    try
    {
        string strConnectionString = ConfigurationManager.ConnectionStrings["BlogConnectionString"].ConnectionString;
        SqlConnection myConnect = new SqlConnection(strConnectionString);

        string strCommandText = "INSERT EntryTable(AdminNumber, Name, BlogStory, DateEntry) Values(@AdminNumber, @Name, @BlogStory, @DateEntry)";

        SqlCommand cmd = new SqlCommand(strCommandText, myConnect);

        cmd.Parameters.AddWithValue("@AdminNumber", admin);
        cmd.Parameters.AddWithValue("@Name", name);
        cmd.Parameters.AddWithValue("@BlogStory", story);
        cmd.Parameters.Add("DateEntry", SqlDbType.DateTime);
        cmd.Parameters["DateEntry"].Value = DateTime.Now;

        myConnect.Open();

        int result = cmd.ExecuteNonQuery();

        if (result > 0)
        { lblError.Text = "Record Updated"; 
         bindResultGridView();
        }

        else { lblError.Text = "Update fail"; }

        myConnect.Close();
    }
    catch(Exception)
    {
        lblError.Text = "Please enter correct data";
    }


}
0
Pony 25 Мар 2014 в 12:56
Проверьте мой ответ. Надеюсь, это поможет вам. Не забудьте проголосовать и отметить как ответ.
 – 
SpiderCode
25 Мар 2014 в 14:20

3 ответа

Лучший ответ

Сделать это можно двумя способами:

1. Использование JQuery:

При щелчке каждого флажка отключите все три флажка с помощью JQuery, как указано в примере кода ниже:

HTML:

<asp:CheckBox runat="server" ID="chkIPP" CssClass="check" />
<asp:CheckBox runat="server" ID="chkOutReach" CssClass="check" />
<asp:CheckBox runat="server" ID="chkCCA" CssClass="check" />
<asp:Button runat="server" ID="buttonSubmit" Text="Submit" OnClick="buttonTest_OnClick" />

JavaScript:

$('.check').click(function () {
    $('.check').each(function () {
        $(this).prop('disabled', 'disabled');
    });
});

2. Использование списка флажков с событием SelectedIndexChanged :

HTML:

<asp:CheckBoxList runat="server" ID="cblType" OnSelectedIndexChanged="cblType_OnSelectedIndexChanged" AutoPostBack="True">
    <Items>
        <asp:ListItem Text="IPP Stories" Value="IPP Stories"></asp:ListItem>
        <asp:ListItem Text="OutReach Activities " Value="OutReach Activities"></asp:ListItem>
        <asp:ListItem Text="CCA" Value="CCA"></asp:ListItem>
    </Items>
</asp:CheckBoxList>

<asp:Button runat="server" ID="buttonSubmit" Text="Submit" OnClick="buttonTest_OnClick" />

Отложенный код:

protected void cblType_OnSelectedIndexChanged(object sender, EventArgs e)
{
    this.cblType.Enabled = false;
}

Событие нажатия кнопки "Отправить":

protected void btnSubmit_Click(object sender, EventArgs e)
{
    string AdminNumber = Convert.ToString(txtAdmin.Text);
    string Name = Convert.ToString(txtName.Text);
    string BlogStory = Convert.ToString(txtStory.Text);
    string BlogType = cblType.SelectedValue;
    insertGameRecord(AdminNumber, Name, BlogStory, BlogType);
}
1
SpiderCode 25 Мар 2014 в 14:37
Но как написать запрос? как указать поле столбца BlogType @SpiderCode
 – 
Pony
25 Мар 2014 в 14:24
Если вы не знаете о jQuery, вы можете использовать мой второй вариант, используя OnCheckedChanged.
 – 
SpiderCode
25 Мар 2014 в 14:25
Думаю, воспользуюсь вторым. Но я подумал, что нужно написать код, чтобы он знал, какое поле столбца для входа в базу данных @SpiderCode
 – 
Pony
25 Мар 2014 в 14:27
Посмотрите мой обновленный ответ для второго варианта.
 – 
SpiderCode
25 Мар 2014 в 14:37

У вас есть другая таблица для BlogType? Если да, я предлагаю вам создать еще одну таблицу между таблицей BlogType и EntryTable. Затем вы можете сохранить выбранные значения флажков в этой таблице. Таблица может быть такой.

ID << primary key
BlogID << EntryTable referance id
BlogTypeID << BlogType table referance id

Таким образом вы можете вставить новую запись для каждого выбранного значения флажка по BlogId.

enter image description here

1
serhads 25 Мар 2014 в 14:09
Ой нет, у меня только 1 стол. @serhads
 – 
Pony
25 Мар 2014 в 13:11
Я хочу разрешить только один флажок. Я уже отредактировал свой пост выше. @serhads
 – 
Pony
25 Мар 2014 в 13:13
1
В этом случае использование флажка не логично. вы можете использовать радиобокс или раскрывающийся список. и спросите своего учителя, почему он / она подталкивает вас к использованию флажка?
 – 
serhads
25 Мар 2014 в 13:16
Он сказал мне, что в будущем проекте может потребоваться проверить несколько значений и вставить их в базу данных. Поэтому он сказал мне использовать флажок на данный момент, только одно значение которого должно быть отправлено в базу данных. В будущем измените на несколько флажков @serhads
 – 
Pony
25 Мар 2014 в 13:19
Хорошо. поэтому вам следует создать еще одну таблицу и поместить в нее значения BlogType и установить связь с другими таблицами. В противном случае вы не сможете добавить несколько значений в будущем программно. не трогая код в будущем, вы можете добавить только новый элемент BlogType в таблицу BlogType.
 – 
serhads
25 Мар 2014 в 13:25
  1. вам нужно заменить флажок на переключатель или раскрывающийся список, чтобы выбрать любой вариант.

Я предполагаю, что вы создали раскрывающийся список с именем "drpBlogType"

 protected void btnSubmit_Click(object sender, EventArgs e)

{
    string AdminNumber = Convert.ToString(txtAdmin.Text);
    string Name = Convert.ToString(txtName.Text);
    string BlogStory = Convert.ToString(txtStory.Text);
    // get value or dropdown
    string BlogType = drpBlogType.SelectedValue;


        insertGameRecord(AdminNumber, Name, BlogStory,BlogType);
    }

    private void insertGameRecord(string admin, string name, string story,string BlogType)
    {
        try
        {
            string strConnectionString = ConfigurationManager.ConnectionStrings["BlogConnectionString"].ConnectionString;
            SqlConnection myConnect = new SqlConnection(strConnectionString);

            string strCommandText = "INSERT EntryTable(AdminNumber, Name, BlogStory, DateEntry,BlogType) Values(@AdminNumber, @Name, @BlogStory, @DateEntry,@BlogType)";

            SqlCommand cmd = new SqlCommand(strCommandText, myConnect);

            cmd.Parameters.AddWithValue("@AdminNumber", admin);
            cmd.Parameters.AddWithValue("@Name", name);
            cmd.Parameters.AddWithValue("@BlogStory", story);
            cmd.Parameters.AddWithValue("@BlogType", BlogType);

            cmd.Parameters.Add("DateEntry", SqlDbType.DateTime);
            cmd.Parameters["DateEntry"].Value = DateTime.Now;

            myConnect.Open();

            int result = cmd.ExecuteNonQuery();

            if (result > 0)
            { lblError.Text = "Record Updated"; 
             bindResultGridView();
            }

            else { lblError.Text = "Update fail"; }

            myConnect.Close();
        }
        catch(Exception)
        {
            lblError.Text = "Please enter correct data";
        }


    }
0
Anant Dabhi 25 Мар 2014 в 13:08
И вы хотите сохранить все выбранные значения флажков в таблицу?
 – 
Anant Dabhi
25 Мар 2014 в 13:11