如何在GridView中显示第三两列的产品吗? [英] How to display product of two columns in third in GridView?

查看:137
本文介绍了如何在GridView中显示第三两列的产品吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个GridView这对于实例都有..列1列2和。作为用户类型的编号为列1列2和我想显示输入的数字的产品在第三栏3文本框。

 列1 |列2 |栏3
200 | 100 | 20000

如果我不是usingGridView这可能是简单的。我不知道如何做到这一点在GridView因为可以无限行。我不知道如果我能的ClientIDMode为静态。

如果它为的werent我可以用在GridView

 函数填充(){
        VAR TXT1 =的document.getElementById(TextBox1中)值0。
        VAR TXT2 =的document.getElementById(TextBox2中)值0。
        。的document.getElementById(TextBox3)值= TXT1 * TXT2;
    }

注意:我不希望显示在回发的计算值..我想显示它的文本框onchange事件。
如果需要的话,我准备限制可以加到任何特定的数目,如5的行数

更新

 < ASP:GridView控件ID =Gridview1=服务器ShowFooter =真
        的AutoGenerateColumns =FALSEShowHeaderWhenEmpty =真EmptyDataText =的CssClass =资料表
                                   WIDTH =100%onrowdatabound =Gridview1_RowDataBound>
        <柱体和GT;
        < ASP:BoundField的数据字段=ROWNUMBER的HeaderText =行号/>       <% - ============================================= ==== - %GT;
       < ASP:的TemplateField的HeaderText =充电成本中心>
                <&ItemTemplate中GT;
                    < ASP:DropDownList的ID =drpchargecostcenter=服务器> <% - 的SelectedValue ='<%#的eval(chargecostcenter)%>' - %GT;
                        < ASP:ListItem的值=0>选择< / ASP:ListItem的>
                        &所述; asp的:列表项值=1> A1ALTIN​​V&下; / ASP:列表项>
                        < ASP:ListItem的值=2> A1BAXAD2C< / ASP:ListItem的>
                    < / ASP:DropDownList的>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =充电位置>
                <&ItemTemplate中GT;
                    < ASP:DropDownList的ID =drpchargelocation=服务器>
                        < ASP:ListItem的值=0>选择< / ASP:ListItem的>
                        < ASP:ListItem的值=1>&领主LT; / ASP:ListItem的>
                    < / ASP:DropDownList的>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
         <% - ============================================= ==== - %GT;
        < ASP:的TemplateField的HeaderText =费用日期>
            <&ItemTemplate中GT;
                < ASP:文本框ID =txtexpdate=服务器文本='<%#的eval(EXPDATE)%>'
                    的onkeydown =返回false; WIDTH =50像素>< / ASP:文本框>
                < ASP:CalendarExtender ID =CalendarExtender1=服务器
                    的TargetControlID =txtexpdate>
                < / ASP:CalendarExtender>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
        < ASP:的TemplateField的HeaderText =从一个地方>
            <&ItemTemplate中GT;
                < ASP:文本框ID =txtfrmplace=服务器文本='<%#的eval(fromplace)%>'
                    WIDTH =50像素>< / ASP:文本框>
            < / ItemTemplate中>
        < / ASP:的TemplateField>        < ASP:的TemplateField的HeaderText =为了将>
            < FooterStyle Horizo​​ntalAlign =右/>
            <&ItemTemplate中GT;
                < ASP:文本框ID =txttoplace=服务器文本='<%#的eval(toplace)%>'
                    WIDTH =50像素>< / ASP:文本框>
            < / ItemTemplate中>
            < FooterTemplate>
            <% - < ASP:按钮的ID =ButtonAdd=服务器文本=添加新行
                    的onclick =ButtonAdd_Click/> - %GT;
            < / FooterTemplate>
        < / ASP:的TemplateField>        < ASP:的TemplateField的HeaderText =旅游模式>
            < FooterStyle Horizo​​ntalAlign =右/>
            <&ItemTemplate中GT;
                < ASP:DropDownList的ID =drpmodeoftravelWIDTH =100px的=服务器>
                < / ASP:DropDownList的>
               <% - < ASP:SqlDataSource的ID =SqlDataSource1=服务器
                    的ConnectionString =<%$的ConnectionStrings:构造%GT;
                    的SelectCommand =Proc_ReturnTravelModeSelectCommandType =StoredProcedure的>
                < / ASP:SqlDataSource的> - %GT;
            < / ItemTemplate中>
            < FooterTemplate>
            <% - < ASP:按钮的ID =ButtonAdd=服务器文本=添加新行
                    的onclick =ButtonAdd_Click/> - %GT;
            < / FooterTemplate>
        < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =KMS入住时间旅行>
                <&ItemTemplate中GT;
                    < ASP:文本框ID =txtkms=服务器安其preSS =返回isNumberKey(事件)
                        文字='<%#的eval(kmstravelled)%>' WIDTH =50像素>< / ASP:文本框>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =速度/ KM>
                <&ItemTemplate中GT;
                    < ASP:文本框ID =txtrateperkm=服务器
                        安其preSS =返回isNumberKey(事件)文本='<%#的eval(rateperkm)%>'
                        WIDTH =40像素>< / ASP:文本框>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =费用头>
                <&ItemTemplate中GT;
                    < ASP:DropDownList的ID =drpexpensehead=服务器WIDTH =80px>
                    < ASP:ListItem的值=0>选择< / ASP:ListItem的>
                        &所述; asp的:列表项值=1> Utkarsh Parajapati&下; / ASP:列表项>
                    < / ASP:DropDownList的>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =费用说明>
                <&ItemTemplate中GT;
                    < ASP:文本框ID =txtexpdesc=服务器
                        文字='<%#的eval(expensedescription)%>' WIDTH =60像素>< / ASP:文本框>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =付款方式>
                <&ItemTemplate中GT;
                    < ASP:DropDownList的ID =drppaymentmode=服务器WIDTH =120像素>
                        < ASP:ListItem的值=0>选择< / ASP:ListItem的>
                        &所述; asp的:列表项值=1> Reimbersement&下; / ASP:列表项>
                    < / ASP:DropDownList的>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =比尔金额>
                <&ItemTemplate中GT;
                    < ASP:文本框ID =billamt=服务器安其preSS =返回isNumberKey(事件)
                        文字='<%#的eval(billamt)%>' WIDTH =60像素>< / ASP:文本框>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
          < ASP:的TemplateField的HeaderText =D>
            <&ItemTemplate中GT;
                < ASP:LinkBut​​ton的=服务器ID =lnkDel按需=DeleteRowHandler文本=D>< / ASP:LinkBut​​ton的>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
        < /专栏>
    < / ASP:GridView的>


解决方案

我创建了一个样本,使其与您issue.Please检查并修改根据您的要求。

ASPX:

 < ASP:GridView控件ID =Gridview1=服务器ShowFooter =真的AutoGenerateColumns =FALSE
        ShowHeaderWhenEmpty =真EmptyDataText =的CssClass =资料表宽度=100%>
        <柱体和GT;
            < ASP:BoundField的数据字段=ID的HeaderText =行号/>
            < ASP:的TemplateField的HeaderText =KMS入住时间旅行>
                <&ItemTemplate中GT;
                    < ASP:文本框ID =txtkms=服务器的onchange =回归乘(这一点,THIS.VALUE);
                        WIDTH =50像素>< / ASP:文本框>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =速度/ KM>
                <&ItemTemplate中GT;
                    < ASP:文本框ID =txtrateperkm=服务器的onchange =回归乘(这一点,THIS.VALUE);
                         WIDTH =40像素>< / ASP:文本框>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
            < ASP:的TemplateField的HeaderText =比尔金额>
                <&ItemTemplate中GT;
                    < ASP:文本框ID =billamt=服务器
                        WIDTH =60像素>< / ASP:文本框>
                < / ItemTemplate中>
            < / ASP:的TemplateField>
        < /专栏>
    < / ASP:GridView的>

的Javascript:

 <脚本类型=文/ JavaScript的>
  //当数量/成本文本框失去专注在内容有所改变时调用此方法
  功能乘法(元素,VAL){    // billamt = txtkms * txtrateperkm
      VAR otherElementName ='';
      VAR finalElementName ='';
      //调用元素即,数量/成本文本框的ID
      VAR的ElementName = element.id;
      VAR指数= elementName.split('_');
      变种finalElement =的document.getElementById(指数[0] +_billamt_+指数[2]);
      finalElement.value ='';
    //获取第二个要素,即得到量的变化,如果在成本,反之亦然
      如果(的endsWith(的ElementNametxtkms_+指数[2])){
          otherElementName = elementName.replace(txtkms_+指数[2],txtrateperkm_+指数[2]);
      }
      否则如果(的endsWith(的ElementNametxtrateperkm_+指数[2])){
          otherElementName = elementName.replace(txtrateperkm+指数[2],txtkms_+指数[2]);
      }
      VAR otherElement =的document.getElementById(otherElementName);
      //获取文本框,其中最终值将要被显示
      finalElementName =指数[0] +_billamt_+指数[2];
      VAR finalElement =的document.getElementById(finalElementName);
      finalElement.value = otherElement.value * VAL;
  }  //检查,如果给定的字符串与给定的后缀结束
  功能的endsWith(STR,后缀){
    返回str.indexOf(后缀,str.length - suffix.length)== -1!;
}< / SCRIPT>

服务器端:

 保护无效的Page_Load(对象发件人,EventArgs的发送)
{
    员工EMP = NULL;
    清单<员工> listEmployee =新的List<员工>();
    的for(int i = 0; I< 1;我++)
    {
        EMP =新员工();
        emp.ID = I;
        //emp.Age =年龄:+ i.ToString();
        //emp.Location =位置:+ i.ToString();
        listEmployee.Add(EMP);
    }
    Gridview1.DataSource = listEmployee;
    Gridview1.DataBind();}
类Employee
{
 公众诠释ID {搞定;组; }
}

请让我知道如果你需要进一步的援助。

I have a GridView which for instance has.. column1 and column2.. as user types numbers into column1 and column2 i want to display the product of the entered numbers in a textbox in third column3.

Column1 | Column2  | Column3
200     |  100     | 20000

This could have been simple if i wasnt usingGridView. I am not sure how to do this in a GridView since there can be unlimited rows. I am not sure if i can ClientIDMode to static.

If it werent for the GridView I could have used

function fill() {
        var txt1 = document.getElementById("TextBox1").value-0;
        var txt2 = document.getElementById("TextBox2").value-0;
        document.getElementById("TextBox3").value = txt1 * txt2;
    }

Note: I do not want to show calculated values on postback.. i want to show it on onchange event of textbox . If needed i am ready to limit the number of rows that can be added to any specific number such as 5.

UPDATE

<asp:gridview ID="Gridview1" runat="server" ShowFooter="True" 
        AutoGenerateColumns="False"  ShowHeaderWhenEmpty="true" EmptyDataText="" CssClass="tabledata" 
                                   Width="100%" onrowdatabound="Gridview1_RowDataBound">
        <Columns>
        <asp:BoundField DataField="RowNumber" HeaderText="Row Number" />

       <%-- =================================================--%>
       <asp:TemplateField HeaderText="Charge Cost Center">
                <ItemTemplate>
                    <asp:DropDownList ID="drpchargecostcenter" runat="server" > <%--SelectedValue='<%# Eval("chargecostcenter") %>'--%>
                        <asp:ListItem Value="0">Select</asp:ListItem>
                        <asp:ListItem Value="1">A1ALTINV</asp:ListItem>
                        <asp:ListItem Value="2">A1BAXAD2C</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Charge Location ">
                <ItemTemplate>
                    <asp:DropDownList ID="drpchargelocation" runat="server">
                        <asp:ListItem Value="0">Select</asp:ListItem>
                        <asp:ListItem Value="1">Thane</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
         <%-- =================================================--%>


        <asp:TemplateField HeaderText="Expense Date">
            <ItemTemplate>
                <asp:TextBox ID="txtexpdate" runat="server" Text='<%# Eval("expdate") %>' 
                    onkeydown="return false;" Width="50px"></asp:TextBox>
                <asp:CalendarExtender ID="CalendarExtender1" runat="server" 
                    TargetControlID="txtexpdate">
                </asp:CalendarExtender>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="From Place">
            <ItemTemplate>
                <asp:TextBox ID="txtfrmplace" runat="server" Text='<%# Eval("fromplace") %>' 
                    Width="50px"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="To Place">
            <FooterStyle HorizontalAlign="Right" />
            <ItemTemplate>
                <asp:TextBox ID="txttoplace" runat="server" Text='<%# Eval("toplace") %>' 
                    Width="50px"></asp:TextBox>
            </ItemTemplate>
            <FooterTemplate>
            <%-- <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" 
                    onclick="ButtonAdd_Click" />--%>
            </FooterTemplate>
        </asp:TemplateField>



        <asp:TemplateField HeaderText="Mode of Travel">
            <FooterStyle HorizontalAlign="Right" />
            <ItemTemplate>
                <asp:DropDownList ID="drpmodeoftravel" Width="100px" runat="server"  >
                </asp:DropDownList>
               <%-- <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:constr %>" 
                    SelectCommand="Proc_ReturnTravelMode" SelectCommandType="StoredProcedure">
                </asp:SqlDataSource>--%>
            </ItemTemplate>
            <FooterTemplate>
            <%-- <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" 
                    onclick="ButtonAdd_Click" />--%>
            </FooterTemplate>
        </asp:TemplateField>


            <asp:TemplateField HeaderText="KMS Travelled">
                <ItemTemplate>
                    <asp:TextBox ID="txtkms" runat="server" onkeypress="return isNumberKey(event)"
                        Text='<%# Eval("kmstravelled") %>' Width="50px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Rate/KM">
                <ItemTemplate>
                    <asp:TextBox ID="txtrateperkm" runat="server" 
                        onkeypress="return isNumberKey(event)" Text='<%# Eval("rateperkm") %>' 
                        Width="40px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Expense Head">
                <ItemTemplate>
                    <asp:DropDownList ID="drpexpensehead" runat="server" Width="80px">
                    <asp:ListItem Value="0">Select</asp:ListItem>
                        <asp:ListItem Value="1">Utkarsh Parajapati</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Expense Description">
                <ItemTemplate>
                    <asp:TextBox ID="txtexpdesc" runat="server" 
                        Text='<%# Eval("expensedescription") %>' Width="60px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Payment Mode">
                <ItemTemplate>
                    <asp:DropDownList ID="drppaymentmode" runat="server" Width="120px">                            
                        <asp:ListItem Value="0">Select</asp:ListItem>
                        <asp:ListItem Value="1">Reimbersement</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Bill Amt">
                <ItemTemplate>
                    <asp:TextBox ID="billamt" runat="server" onkeypress="return isNumberKey(event)" 
                        Text='<%# Eval("billamt") %>' Width="60px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
          <asp:TemplateField HeaderText="D">
            <ItemTemplate>
                <asp:LinkButton runat="server" ID="lnkDel" OnCommand="DeleteRowHandler" Text="D"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        </Columns>
    </asp:gridview>

解决方案

I have created one sample to resemble your issue.Please check this and modify according to your requirement.

ASPX :

 <asp:GridView ID="Gridview1" runat="server" ShowFooter="True" AutoGenerateColumns="False"
        ShowHeaderWhenEmpty="true" EmptyDataText="" CssClass="tabledata" Width="100%">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="Row Number" />
            <asp:TemplateField HeaderText="KMS Travelled">
                <ItemTemplate>
                    <asp:TextBox ID="txtkms" runat="server" onchange="return Multiply(this,this.value);"
                        Width="50px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Rate/KM">
                <ItemTemplate>
                    <asp:TextBox ID="txtrateperkm" runat="server" onchange="return Multiply(this,this.value);"
                         Width="40px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Bill Amt">
                <ItemTemplate>
                    <asp:TextBox ID="billamt" runat="server" 
                        Width="60px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

Javascript :

 <script type="text/javascript">
  //This method is called when quantity/cost textbox looses focus with some change in content
  function Multiply(element, val) {

    //billamt =  txtkms * txtrateperkm
      var otherElementName = '';
      var finalElementName = '';
      //id of calling element i.e, quantity/cost textbox
      var elementName = element.id;
      var index = elementName.split('_');
      var finalElement = document.getElementById(index[0] + "_billamt_" + index[2]);
      finalElement.value = '';
    //get second element, i.e., get quantity if change is in cost and vice-versa
      if (endsWith(elementName, "txtkms_" + index[2])) {
          otherElementName = elementName.replace("txtkms_" + index[2], "txtrateperkm_" + index[2]);
      }
      else if (endsWith(elementName, "txtrateperkm_" + index[2])) {
          otherElementName = elementName.replace("txtrateperkm" + index[2], "txtkms_" + index[2]);
      }
      var otherElement = document.getElementById(otherElementName);
      //get textbox where final value is to be displayed
      finalElementName = index[0] + "_billamt_" + index[2];        
      var finalElement = document.getElementById(finalElementName);
      finalElement.value = otherElement.value * val;
  }

  //checks if given string ends with given suffix
  function endsWith(str, suffix) {
    return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

</script>

Server Side :

 protected void Page_Load(object sender, EventArgs e)
{
    Employee emp = null;
    List<Employee> listEmployee = new List<Employee>();
    for (int i = 0; i < 1; i++)
    {
        emp = new Employee();
        emp.ID = i;
        //emp.Age = "Age :" + i.ToString();
        //emp.Location = "Location :" + i.ToString();
        listEmployee.Add(emp);
    }
    Gridview1.DataSource = listEmployee;
    Gridview1.DataBind();

}
class Employee
{
 public int ID { get; set; }
}

Please let me know if you need further assistance.

这篇关于如何在GridView中显示第三两列的产品吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆