아래와 같이 그리드를 임의로 구성해 주었습니다.

 

        protected System.Web.UI.WebControls.DataGrid DataGrid1;

    

        private void Page_Load(object sender, System.EventArgs e)

        {

            DataSet ds = new DataSet();

            string[] strs;

 

            ds.Tables.Add("NewDT");

 

            ds.Tables["NewDT"].Columns.Add("f1");

            ds.Tables["NewDT"].Columns.Add("f2");

            ds.Tables["NewDT"].Columns.Add("f3");

 

            strs = new string[] {"1", "1", ""};

            for(int i=0; i<10; i++)

                ds.Tables["NewDT"].Rows.Add(strs);

            DataGrid1.DataSource = ds;

            DataGrid1.DataBind();

 

        }

 

 

아래와 같이 그리드를 설정해 주었습니다.

 

            <asp:datagrid id="DataGrid1" runat="server" PagerStyle-Visible="true" CssClass="green" ShowHeader="false"

                AutoGenerateColumns="False" BorderWidth="0" CellSpacing="0" CellPadding="0" GridLines="Horizontal">

                <Columns>

                    <asp:TemplateColumn HeaderText="No" HeaderStyle-CssClass="body2_8" HeaderStyle-BackColor="#3cadd3" HeaderStyle-Height="34"

                        ItemStyle-Width="30" ItemStyle-HorizontalAlign="Center" ItemStyle-Height="24">

                        <ItemTemplate>

                            <asp:TextBox id="TextBox1" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.f1") %>' onchange="Compute(this, 1, 2)"></asp:TextBox>

                        </ItemTemplate>

                    </asp:TemplateColumn>

                    <asp:TemplateColumn HeaderText="구분" HeaderStyle-CssClass="body2_8" HeaderStyle-BackColor="#3cadd3" ItemStyle-Width="30">

                        <ItemTemplate>

                            <asp:TextBox id="Textbox2" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.f2") %>' onchange="Compute(this, -1, 1)"></asp:TextBox>

                        </ItemTemplate>

                    </asp:TemplateColumn>

                    <asp:TemplateColumn HeaderText="모델명" HeaderStyle-CssClass="body2_8" HeaderStyle-BackColor="#3cadd3"

                        ItemStyle-Width="100">

                        <ItemTemplate>

                            <asp:TextBox id="Textbox3" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.f3") %>'></asp:TextBox>

                        </ItemTemplate>

                    </asp:TemplateColumn>

                </Columns>

            </asp:datagrid>

 

 

아래와 같이 자바스크립트 함수를 구현했습니다.

 

        <script language="javascript">

        function Compute(TextBox, POS, result){

            var TextBoxs = document.getElementsByTagName('INPUT');

            

            for(i=0;i<TextBoxs.length;i++){

                if(TextBoxs[i] == TextBox)

                    TextBoxs[i+result].value = parseInt(TextBox.value) + parseInt(TextBoxs[i+POS].value)

            }

        }

        </script>

 

 

getElementsByTagName은 6.0이후에 지원되는 함수라는 말이 있습니다. 제가 6.0을 사용하고 있기 때문에 확인해 본바는 아니구요.

 

처음 답변에 있던 URL의 게시판에 보시면 6.0이전에서 사용되는 함수를 올려 놓은 것이 있을겁니다. 검색에서 name에 'miniaron'으로 검색하시면 나옵니다.

 

 

프로젝트 실제 코드를 함께 올려드리니 참고하십시요.

 

성공하시면 답변 주시고요.

 

성공을 기원합니다.

 

등대지기 황상범

 

 

에구구...사내 보안관련해서 화일이 업로드 되지 않는 관계로 URL을 적습니다.

http://www.lottokeno.co.kr/Proj_01.zip

 

 

 

데이터그리드편집속성에서 특정컬럼에 TemplateColumn을 추가한후 그안에 textBox를 추가했을경우 Page_Load 이벤트내의 코드를 해주지 않으면 컴파일후 DataGrid에 빈 DataTable이 바인딩된 상태가 되지 않는다.. 이유는 모름..연구중..


Posted by 뭉치냐옹
: