如何在asp.net应用程序中实现编辑功能?

时间:2011-04-10 14:26:14

标签: c# asp.net visual-studio gridview edit

以下2个链接提供了我的示例应用程序的预览。

http://img812.imageshack.us/i/image1adl.jpg/:显示我的示例应用程序。所有字段都是自解释的(如果查询,请告知我们)

http://img834.imageshack.us/i/image2vc.jpg/:显示,当点击网格中的“编辑”按钮时,时间显示正确,但顺序受到干扰。 (见上面的7点,然后看到时间表)。

我的问题

  1. 如何纠正时间问题? (链接#2)
  2. “编辑”的代码位于

    之下
    protected void lnkEdit_Click(object sender, EventArgs e)
    {
        int imageid = Convert.ToInt16((sender as Button).CommandArgument);
    
        DataSet ds = new DataSet();
    
        SqlConnection sqlconn = new SqlConnection();
        sqlconn.ConnectionString = ConfigurationManager.ConnectionStrings["TestConn"].ConnectionString;
        string sql = @"SELECT * FROM Images WHERE IsDeleted=0 and Imageid='"+ imageid +"'";
    
        SqlCommand sqlcommand = new SqlCommand(sql, sqlconn);
        sqlcommand.CommandType = CommandType.Text;
        sqlcommand.CommandText = sql;
    
        SqlDataAdapter da = new SqlDataAdapter(sqlcommand);
        da.Fill(ds);
    
        if (ds.Tables[0].Rows.Count > 0)
        {
            txtImageName.Text = ds.Tables[0].Rows[0].ItemArray[1].ToString();
            chkIsActive.Checked = Convert.ToBoolean(ds.Tables[0].Rows[0]["IsActive"].ToString());
            ddlStartTime.DataSource = ds;
            ddlStartTime.DataTextField = ds.Tables[0].Columns["StartTime"].ColumnName.ToString();
            ddlStartTime.DataValueField = ds.Tables[0].Columns["ImageId"].ColumnName.ToString();
            ddlStartTime.DataBind();
            ddlEndTime.DataSource = ds;
            ddlEndTime.DataTextField = ds.Tables[0].Columns["EndTime"].ColumnName.ToString();
            ddlEndTime.DataValueField = ds.Tables[0].Columns["ImageId"].ColumnName.ToString();
            ddlEndTime.DataBind();
            BindDropDownList();
            IsEdit = true;
        }
    
    1. 当我编辑网格中的现有记录时,我获取了值,但是记录没有被更新,而是作为新记录添加到db中。我知道我想编写更新脚本。但在哪里写呢?
    2. 代码下面是相同的;

      protected void btnSubmit_Click(object sender, EventArgs e)
      {
          if (Page.IsPostBack)
          {
              try
              {
                  string strImageName = txtImageName.Text.ToString();
                  int IsActive = 1;
                  if (chkIsActive.Checked)
                      IsActive = 1;
                  else
                      IsActive = 0;
      
                  string startDate = ddlStartTime.SelectedItem.Text;
                  string endDate = ddlEndTime.SelectedItem.Text;
      
                  if ( Convert.ToDateTime(endDate) - Convert.ToDateTime(startDate) > new TimeSpan(2, 0, 0) || Convert.ToDateTime(endDate)- Convert.ToDateTime(startDate) < new TimeSpan(2,0,0))
                  {   
                      //Response.Write(@"<script language='javascript'> alert('Difference between Start Time and End Time is 2 hours'); </script> ");
                      lblHours.Visible = true;
                      lblHours.Text = "Difference between Start Time and End Time should be 2 hours";
                      return;
                  }
      
                  if (checkConflictTime())
                  {
                      lblMessage.Visible = true;
                      lblMessage.Text = "Time Conflict";
                      return;
                  }
      
                  //if (checkTimeBetween())
                  //{
                  //}
      
                  if (fuFileUpload.PostedFile != null && fuFileUpload.PostedFile.FileName != "")
                  {
                      lblHours.Visible = false;
                      byte[] imageSize = new Byte[fuFileUpload.PostedFile.ContentLength];
                      HttpPostedFile uploadedImage = fuFileUpload.PostedFile;
                      uploadedImage.InputStream.Read(imageSize, 0, (int)fuFileUpload.PostedFile.ContentLength);
      
                      SqlConnection sqlconn = new SqlConnection();
                      sqlconn.ConnectionString = ConfigurationManager.ConnectionStrings["TestConn"].ConnectionString;
      
                      SqlCommand cmd = new SqlCommand();
                      if (IsEdit == false)
                      {
                          cmd.CommandText = "Insert into Images(FileName,FileContent,IsDeleted,IsActive,StartTime,EndTime) values (@img_name, @img_content,@IsDeleted,@IsActive,@StartTime,@EndTime)";
                      }
                      else
                      {
                          cmd.CommandText = "Update Images set FileName=@img_name, FileContent=@img_content, IsDeleted= @IsDeleted,IsActive= @IsActive, StartTime=@StartTime,EndTime=@EndTime";
                      }
                      cmd.CommandType = CommandType.Text;
                      cmd.Connection = sqlconn;
      
                      SqlParameter ImageName = new SqlParameter("@img_name", SqlDbType.NVarChar, 50);
                      ImageName.Value = strImageName.ToString();
                      cmd.Parameters.Add(ImageName);
      
                      SqlParameter ActualImage = new SqlParameter("@img_content", SqlDbType.VarBinary);
                      ActualImage.Value = imageSize;
                      cmd.Parameters.Add(ActualImage);
      
                      SqlParameter DeletedImage = new SqlParameter("@IsDeleted", SqlDbType.Bit);
                      DeletedImage.Value = 0;
                      cmd.Parameters.Add(DeletedImage);
      
                      SqlParameter IsActiveCheck = new SqlParameter("@IsActive", SqlDbType.Bit);
                      IsActiveCheck.Value = IsActive;
                      cmd.Parameters.Add(IsActiveCheck);
      
                      SqlParameter StartDate = new SqlParameter("@StartTime", SqlDbType.NVarChar, 100);
                      StartDate.Value = startDate;
                      cmd.Parameters.Add(StartDate);
      
                      SqlParameter EndDate = new SqlParameter("@EndTime", SqlDbType.NVarChar, 100);
                      EndDate.Value = endDate;
                      cmd.Parameters.Add(EndDate);
      
                      sqlconn.Open();
                      int result = cmd.ExecuteNonQuery();
                      sqlconn.Close();
      
                      if (result > 0)
                      {
                          lblMessage.Visible = true;
                          lblMessage.Text = "File Uploaded!";
                          gvImages.DataBind();
                      }
                  }
              }
              catch (Exception ex)
              {
                  lblMessage.Text = ex.ToString();
              }
          }
      
      }
      

      请帮忙!

1 个答案:

答案 0 :(得分:1)

您在哪里定义Bool/Bolean IsEdit?我认为它的值会在页面回发时重置,这就是为什么它总是 false 并且正在插入记录。我建议你使用隐藏字段来跟踪它并在那里设置它的值并检查插入/更新时的值。最后它会像......

if (ds.Tables[0].Rows.Count > 0)
{
   //your code
   hiddenField.Value = "true"; // you can set default value to false
}

然后

if (hiddenField.Value == "false")
   {
    cmd.CommandText = "Insert into Images(FileName,FileContent,IsDeleted,IsActive,StartTime,EndTime) values (@img_name, @img_content,@IsDeleted,@IsActive,@StartTime,@EndTime)";
   }
   else
   {
    cmd.CommandText = "Update Images set FileName=@img_name, FileContent=@img_content, IsDeleted= @IsDeleted,IsActive= @IsActive, StartTime=@StartTime,EndTime=@EndTime";
   }