2013-09-25 35 views
0

乘以GrideView專欄中,我有GridView的一些數據:如何與一個TextBox

<asp:GridView ID="gvSelected" runat="server" 
AutoGenerateColumns = "False" Font-Names = "Arial" 
EmptyDataText = "No Records Selected"> 
<Columns> 
    <asp:BoundField DataField = "ID" HeaderText = "ID" /> 
    <asp:BoundField DataField = "Name" HeaderText = "Name" /> 
    <asp:BoundField DataField = "Desc" HeaderText = "Description" /> 
    <asp:BoundField DataField = "Price" HeaderText = "Price" /> 
    <asp:TemplateField> 
<ItemTemplate> 
    <asp:TextBox ID="txtAmount" runat="server" Text="0" 
       OnTextChanged="txtAmount_TextChanged" AutoPostBack="true"> 
    </asp:TextBox> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField> 
<ItemTemplate> 
    <asp:Label ID="lblResult" Text="0" runat="server" /> 
</ItemTemplate> 
</asp:TemplateField> 
</Columns> 
<HeaderStyle BackColor="Green"></HeaderStyle> 
</asp:GridView> 

想乘「價格」從文本框的一些量,其結果是與標籤顯示的列(lblResult)。現在嘗試使用txtAmount_TextChanged代碼,之前有很多變化,但目前爲止沒有結果......任何建議!?

protected void txtAmount_TextChanged(object sender, EventArgs e) 
    { 
      TextBox amount= (TextBox)gvSelected.FindControl("txtAmount"); 
      Label result = (Label)gvSelected.FindControl("lblResult"); 
      score.Text = ((Convert.ToInt32(row)) * Convert.ToInt32(amount.Text)).ToString(); 
    } 
+0

檢查答案,如果使用滿,然後標記答案。 – Sunny

回答

1

我昨天做過這件事。您可以修改此根據您的要求

ASPX:

<asp:GridView ID="Gridview1" runat="server" ShowFooter="True" AutoGenerateColumns="False" onrowdatabound="Gridview1_RowDataBound" 
    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" Width="50px"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Rate/KM"> 
      <ItemTemplate> 
       <asp:TextBox ID="txtrateperkm" runat="server" 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> 

CS:

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(); 

} 

    protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    var txtkms = e.Row.FindControl("txtkms") as TextBox; 
    var txtrateperkm = e.Row.FindControl("txtrateperkm") as TextBox; 
    var billamt = e.Row.FindControl("billamt") as TextBox; 
    var jsFunction = String.Format("CalculateBillAmount('{0}','{1}','{2}');", txtkms.ClientID, txtrateperkm.ClientID, billamt.ClientID); 
    txtkms.Attributes.Add("onkeyup", jsFunction); 
    txtkms.Attributes.Add("onblur", jsFunction); 
    txtrateperkm.Attributes.Add("onkeyup", jsFunction); 
    txtrateperkm.Attributes.Add("onblur", jsFunction); 
} 
} 
class Employee 
{ 
public int ID { get; set; } 
} 

的Javascript:

function CalculateBillAmount(kmID, rateID, amtID) { 
var objKm = document.getElementById(kmID), objRate = document.getElementById(rateID), objAmt = document.getElementById(amtID); 
objAmt.value = +objKm.value * +objRate.value; 
} 

希望這將有助於you.Please更新以獲得進一步幫助。

+0

我已根據我的要求進行了修改,因此它可以正常工作。謝謝你的幫助 – McKeymayker

相關問題