【问题标题】:prevent gridview row duplication asp.net c#防止gridview行重复asp.net c#
【发布时间】:2017-04-19 09:57:17
【问题描述】:

我有一个包含下拉列表、会话[student-id]、按钮、gridview 的网页

学生将从下拉列表中选择课程并单击注册按钮,然后学生 ID 和所选课程将添加到网格视图中。

我的问题是,如果学生已经注册了这门课程,我该如何向他显示错误消息。

我的意思是,如果该学生有所选课程,我希望注册按钮检查数据库。

有什么帮助吗??

【问题讨论】:

  • 显示你迄今为止尝试过的内容

标签: c# asp.net gridview


【解决方案1】:

只需对 btn_click 事件使用查询

int stu_id=int.Parse(stu_id.Text);
query="select stu_id from table where username='"+stu_id+"'";
if(query)
//already registered student
else
//new student

【讨论】:

    【解决方案2】:

    有几种方法可以实现您正在寻找的东西,但是如果没有看到任何初始代码,几乎不可能准确地实现您正在寻找的东西。因此,我将向您介绍其中两种可能的方法。

    1. 在您的案例中处理重复项的第一种也是最明显的方法 将从 DropDownList 中删除所选课程 登记。这样一来,用户就无法 多次选择同一课程。 代码示例:

              public void RemoveCourseByCourseID(string courseID)
              {
                  if(courseList == null || courseList.Items.Count == 0)
                      return;
      
                  ListItem courseItem = courseList.Items.FindByValue(courseID);
      
                  if(courseItem == null)
                      return;
      
                  courseList.Remove(courseItem);
              }
      
    2. 第二种方法是检查每一行 GridView 和 验证所选课程不存在。这是一个 您可以将其用于您自己的利益的示例代码:

          public bool IsCourseExist(string courseID)
          {
              const int columnCourseID = 0;
              foreach(DataRow row in gridView.Rows)
              {
                  if(row[columnCourseID].ToString() == courseID)
                      return true;
              }
              return false;
          }
      

    【讨论】:

    • 我试过这段代码,但它不起作用 >>>>>>>>>>> for (int i = 0; i
    • 没有错误但是即使if语句是ture也注册了课程
    • 您确定要验证课程 ID 的列索引是正确的(索引 0)吗?
    • 当我删除 for 循环并编写此 GridViewRow row = GridView1.Rows[1] 我的意思是指定我希望哪一行工作正常,但是当我想在所有行中搜索时它不起作用
    • 在我看来你的代码调整有问题。您的代码绝对没有理由不使用 foreach 循环。
    【解决方案3】:

    /使用 linq**/
    var result = from c in dt.AsEnumerable() c组新 {

                                     RiskDescription2 = c.Field<dynamic>("Risk description "),
    
    
                                 } into g
                                 where g.Count() > 1
                                 select new
                                 {
                                     g.Key.RiskDescription2,
    
                                     //  g.Key.Pin,
                                     Noofrec = g.Count()
                                 };
    
                    if (result.ToList().Count > 0)
                    {
                        lblErrMsg.Visible = true;
                        div_err_log.Visible = false;
                        lblErrMsg.Text = "Risk with same description not allowed.";
                        return;
                    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 2021-01-14
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      相关资源
      最近更新 更多