아래 링크 2 개는 샘플 애플리케이션의 미리보기를 제공합니다.asp.net 응용 프로그램에서 편집 기능을 구현하는 방법은 무엇입니까?
http://img812.imageshack.us/i/image1adl.jpg/ : 샘플 응용 프로그램을 보여줍니다. 모든 필드는 자체적으로 설명됩니다 (쿼리 인 경우 알려주세요).
http://img834.imageshack.us/i/image2vc.jpg/ : 그리드에서 "편집"버튼을 클릭하면 타이밍이 올바르게 표시되지만 순서가 방해됩니다. (꼭대기에 오는 7시 참조하십시오 다음 타이밍 목록이 표시됩니다).
내 질문 타이밍의 문제를 해결하는 방법
- ? (링크 # 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;
}
- 이하이지만, 기록은 업데이트되지 않는 db에 새로운 레코드로 추가되었습니다. 나는 내가 업데이트 스크립트를 작성한다고 생각하고있다. 그러나 그것을 어디에 써야할까요?
아래의 코드는 동일합니다.
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 [email protected]_name, [email protected]_content, IsDeleted= @IsDeleted,IsActive= @IsActive, [email protected],[email protected]";
}
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();
}
}
}
도와주세요!
후 나는 IsEdit의 값으로 나오는 것을 볼 수있는 코드를 단계별로 시작하는 것입니다 뭔가 같은 것입니다. False가 아니면 레코드를 삽입합니다. 이것은 설명 된 문제입니다. –
@ Justin : 입력 해 주셔서 감사합니다. IsEdit는 true 일 때 레코드를 업데이트해야하는 bool 변수입니다. 편집 이벤트가 호출되면 true로 설정됩니다 (코드 스 니펫 # 1 -> 마지막 행). 내 문제 : 상태가 항상 거짓으로 나타납니다. –
IsEdit 조건이 충족되고 컴파일러가 업데이트 블록으로 이동하면 나머지 코드는 정상입니까? 값이 사용자로부터 업데이트 쿼리로 입력되지 않습니까? –