2012-07-25 4 views
0

그리드보기 응용 프로그램을 만들고 템플릿 외부에 새 행 추가 버튼이 있습니다. 새 행을 추가하면 편집 및 삭제 버튼이 배치됩니다. 내가 뭘 하려는지 새 행 추가 단추를 클릭하면 편집 모드에서 새 행을 열려면 원하는 빈 행을 빈 정보를 추가 할 수 있습니다. 기본적으로 새 행을 추가하고 입력 정보를 작성하지 않으면 생성되지 않습니다.빈 새 행을 추가하지 마십시오.

제 설명에서 좀 더 철저히 조사 할 필요가 있으면 질문하십시오.

도움이 될 것입니다.

감사합니다

+0

웹, Winforms 또는 WPF는 어떤 플랫폼입니까? 그리고 더 중요한 것은 지금까지 무엇을 시도 했습니까? 귀하의 질문은 많은 문제를 해결하기 위해 많은 노력을 기울이지는 않습니다. 많은 노력을 기울이지는 않습니다. –

+0

이것은 웹 응용 프로그램입니다. – KKP

+0

@MichaelYounani - 새로 추가 된 행의 인덱스가 필요하고'EditIndex' 속성을 설정하십시오. 내 대답을 참조하십시오. – JonH

답변

0

난 내 자신의 문제를 파악 끝났다. 이제 완벽하게 작동합니다. 나뿐만 아니라 데이터베이스를 변경했지만 내 코드를 제공하고 있습니다. 확실히 쉬운 방법이 있다고 확신하지만 이것이 내가 할 수있는 최선의 방법이었습니다. 여러분이 쉬운 방법으로 의견을 제공 할 수 있다면 감사하게 생각합니다.

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 

     if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked 
     { 
      gv.DataBind(); 

      DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString"); 

      string transCode = "", fundCode = "", BSA_CD = "", DP_TYPE = ""; 

      if (d.Rows.Count > 0) 
      { 
       transCode = d.Rows[0]["TRANS_CD"].ToString(); 
       fundCode = d.Rows[0]["FUND_CD"].ToString(); 
       BSA_CD = d.Rows[0]["BSA_CD"].ToString(); 
       DP_TYPE = d.Rows[0]["DP_TYPE"].ToString(); 

       if (transCode.Trim().Length > 0) 
       { 
        dbcon.Execute("INSERT INTO CIS.CIS_TRANS (TRANS_CD) VALUES('')", "ProjectCISConnectionString"); 

        gv.DataBind(); 
       } 
      } 

      gv.EditIndex = gv.Rows.Count - 1; 

     } 
     else if (e.CommandName == "Cancel") 
     { 
      DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString"); 

      string transCode = ""; 

      if (d.Rows.Count > 0) 
      { 
       transCode = d.Rows[0]["TRANS_CD"].ToString(); 

       if (transCode.Trim().Length == 0) 
       { 
        dbcon.Execute(string.Format("DELETE CIS.CIS_TRANS WHERE ID = '{0}'", d.Rows[0]["ID"]), "ProjectCISConnectionString"); 

        gv.DataBind(); 
       } 
      } 


     } 
    } 
-3

이 당신이 행 추가하면 매우 간단하다 : 영업 이익

gv.EditIndex = gv.Rows.Count-1;

편집 :

을 당신은 새로 추가 된 행의 편집 인덱스를 설정해야

이 코드는 더티 코드이며, 나는 단지 내가 의미하는 바를 보여 주며 그것을 상당히 빨리 채찍질합니다. 페이지에 GridView1라는있는 gridview를 가정 : 우리는 그리드 뷰를 결합

namespace HelpSO3 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     List<string> t = new List<string>(); 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       string s = "hi"; 
       t.Add(s); 
       GridView1.DataSource = t; 
       GridView1.DataBind(); 
       Session["MyList"] = t; 
      } 
     } 

     protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
     { 

     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      t = (List<string>)Session["MyList"]; 
      t.Add("Another String"); 
      GridView1.DataSource = t; 
      GridView1.DataBind(); 
      GridView1.EditIndex = GridView1.Rows.Count - 1; 
      GridView1.DataBind(); 
      Session["MyList"] = t; 
     } 
    } 
} 

그래서 Button1_Click 이벤트는 값이 "또 다른 문자열"로 새 행을 추가하고 새로운 행으로 EditIndex 값을 설정하고 바인딩. 간단합니다. 귀하의 경우에는

은 당신의 코드가 될 것이다 :

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked 
     { 
      dbcon.Execute("INSERT INTO PROJ_ASP (TRANS_CD) VALUES('')", "ProjectASPConnectionString"); 

      gv.DataBind(); 
      gv.EditIndex = gv.Rows.Count-1; 
      gv.DataBind(); 
     } 

    } 
+0

그 코드는 어디에 두어야합니까? – KKP

+0

@MichaelYounani 새 행을 추가하는 방법이 있다고 가정합니다. 일단 새로운 행을 추가하면 (그리드 뷰의 맨 아래에 추가한다고 가정합니다) 그렇다면 gridview의 편집 인덱스를 행 수 -1로 설정하십시오 (인덱스는 0 기준). 따라서 새로운 행을 추가하는 이벤트 직후에이 코드를 추가 할 수 있습니다. – JonH

+0

예 새 행이 격자보기의 맨 아래에 배치됩니다. 위의 응용 프로그램에서 새 행 코드를 추가하는 것을 볼 수 있습니다. 그리고 나는 아직도 그것을 배치하는 방법에 대해 다소 혼란스러워합니다. 나는 그것이 0에 기초하지 않는다. – KKP

관련 문제