추가 버튼 클릭하면 텍스트 박스와 드롭다운 리스트 입력/선택하는 항목이 나와야 한다.
5개까지 추가 가능하고, 저장시 입력된 값은 저장되야 한다.
추가 버튼 클릭시 입력 디자인이 나타나야 되서 GridView 컨트롤 사용
먼저 디자인 한다.
<asp:GridView ID="grdItemTest" runat="server" AutoGenerateColumns="false" HorizontalAlign="Center"
EmptyDataRowStyle-HorizontalAlign="Center">
<Columns>
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="chkValue" runat='server' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:TextBox ID="txtItem1" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:DropDownList ID="ddlItem" runat="server">
<asp:ListItem Value="1" Selected="True">선택1</asp:ListItem>
<asp:ListItem Value="2">선택2</asp:ListItem>
<asp:ListItem Value="3">선택3</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:TextBox ID="txtItem2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
GridView 컨트롤에서 Column으로 사용할 때 BoundFiled 를 사용하지만 다양한 표현을 위해서 TemplateField 컨트롤을 사용합니다...다양한 방법으로는...색깔을 바꾼다던지...;;;
코드 페이지 입니다...
먼저 Page_Load 이벤트 public static DataSet ItemTemp;을 선언했습니다. 선언한 이유는 데이터 유지
public static DataSet ItemTemp;
protected void Page_Load(object sender, EventArgs e)
{
추가 버튼 클릭시~GridView Row 행 추가 하는 이벤트 작성
추가 버튼 이벤트에 코드 작성
ButtonAdd_Click
{
DataRow dr;
if(grdItemTest.Rows.Count > 0)
{
for(int i=0; i<grdItemTest.Row.Count; i++)
{
TextBox txtInput = (TextBox)grdItemTest.Rows[i].FindControl("txtItem1");
...
...
//TextBox txtInput = (TextBox)grdItemTest.Rows[i].FindControl("txtItem1");
//텍스트박스 컨트롤 선언 명칭 = (텍스트박스컨트롤)그리드뷰의.Row행[i갯수만큼].찾아라("txtItem1이름을
//가지고 있는 걸");
}
}
else
{
dr = ItemTemp.Tables["tbTest"].NewRow(); //임시테이블로 row추가
ItemTemp.Tables["tbTest"].Row.Add(dr); //임시테이블에 row행추가 선언
}
ItemTemp.AcceptChanges(); //AcceptChanges는 DataRow, DataSet에 있는 메서드로 사용하면 바로
//표시되는 머...그런거?...msdn 검색하세요...Orz
grdItemTest.DataSource = ItemTemp.Tables["tbTest"].DefaultView;
grdItemTest.DataBind();
}
혹시나~Row행 추가 하고나서 데이터 저장하려는 경우엔...
임시 저장 함수를 추가 했습니다...
private void ItemValueTemp()
{
ValueTempItemData(grdItemTest, "item");
grdItemTest.DataSource = ItemTemp;
grdItemTest.DataBind();
}
private void ValueTempItemData(GridView grdItems, string tbName)
{
if(ItemTemp != null)
{
ItemTemp.Dispose();
}
ItemTemp = new DataSet();
ItemTemp = Tables.Add(tbName);
for(int i=0; i< grdItems.Columns.Count; i++)
{
ItemTemp.Tables[tbName].Columns.Add(grdItemTest.Columns[i].FooterText);
}
}
'ASP.NET' 카테고리의 다른 글
프로시저 한개로 Select ?? 2개 사용하기... (0) | 2011.04.20 |
---|---|
코드페이지에서 해당 페이지 닫는 자바스크립트 (0) | 2011.04.14 |
Grid 컨트롤에서 숨겨놓은 컬럼이 보여진다!! (0) | 2011.03.11 |
ASP.NET GridView 컨트롤에서 EmptyDataText 정렬 (0) | 2011.03.10 |
팝업창 열린페이지 버튼 클릭 해서 강제로 닫기 (3) | 2011.03.03 |
Comments