2011-01-15 6 views
0

меня написать этот код, чтобы создать GridView с 3-мя колоннамиКак приумножить текстовое поле с GridView столбцов

DataTable dt = new DataTable(); 
dt = new DataTable(); 
dt.Columns.Add("ID", typeof(int)).AutoIncrement = true; 
dt.Columns.Add("Name", typeof(string)); 
dt.Columns.Add("Price(Grouch)/Hectares", typeof(float)); 
DataColumn[] keys = new DataColumn[2]; 
keys[0] = dt.Columns["ID"]; 
dt.PrimaryKey = keys; 
dt.Rows.Add("1", "Seaside Location", 1.5); 

Session[key] = dt; 
return dt; 

Я хотел бы добавить в этот код в текстовое поле с количеством.

Когда я даю количество, которое я хочу в другом текстовом поле, чтобы получить общее количество.

, например, 2 * 1,5 = 3

Как я могу это сделать?

Моя огромная проблема в том, что я не знаю, как принимать значения третьего столбца. Значение 1.5 в этом примере.

ответ

0

Если я вас правильно понял, вы хотите TextBox в цене -column и текстовое поле для общей цены. Вы можете использовать TemplateColumn, чтобы показать цену в текстовом поле и нижний колонтитул, чтобы показать totalprice.

ASPX:

<asp:GridView ID="GridView1" runat="server" ShowFooter="true" AutoGenerateColumns="false" > 
     <Columns> 
     <asp:BoundField HeaderText="ID" DataField="Name" /> 
     <asp:BoundField HeaderText="Name" DataField="Name" /> 
     <asp:TemplateField HeaderText="Price(Grouch)/Hectares"> 
      <ItemTemplate> 
       <asp:TextBox ID="TxtPrice" runat="server"></asp:TextBox> 
      </ItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="TxtTotal" runat="server" Text="0"></asp:TextBox> 
      </FooterTemplate> 
     </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

Извините за VB.Net, я надеюсь, вы понимаете, что я имею в виду в любом случае, importan часть находится в RowDataBound в GridView:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Not IsPostBack Then 
      BindGrid() 
     End If 
    End Sub 

    Private Sub BindGrid() 
     Dim dt As New DataTable 
     dt.Columns.Add("ID", GetType(Int32)).AutoIncrement = True 
     dt.Columns.Add("Name", GetType(String)) 
     dt.Columns.Add("Price(Grouch)/Hectares", GetType(Single)) 
     dt.PrimaryKey = New DataColumn() {dt.Columns("ID")} 
     Dim newRow As DataRow = dt.NewRow 
     newRow("ID") = 1 
     newRow("Name") = "Seaside Location" 
     newRow("Price(Grouch)/Hectares") = 1.5 
     dt.Rows.Add(newRow) 
     newRow = dt.NewRow 
     newRow("ID") = 2 
     newRow("Name") = "City Location" 
     newRow("Price(Grouch)/Hectares") = 7.9 
     dt.Rows.Add(newRow) 
     Me.GridView1.DataSource = dt 
     Me.GridView1.DataBind() 
    End Sub 

    Private totalPrice As Single = 0 
    Private Sub GridRowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
     If e.Row.RowType = DataControlRowType.DataRow Then 
      Dim row As DataRow = DirectCast(e.Row.DataItem, DataRowView).Row 
      Dim txtPrice As TextBox = DirectCast(e.Row.FindControl("TxtPrice"), TextBox) 
      Dim price As Single = DirectCast(row("Price(Grouch)/Hectares"), Single) 
      txtPrice.Text = price.ToString 
      totalPrice = totalPrice + price 
     ElseIf e.Row.RowType = DataControlRowType.Footer Then 
      Dim txtTotal As TextBox = DirectCast(e.Row.FindControl("TxtTotal"), TextBox) 
      txtTotal.Text = totalPrice.ToString 
     End If 
    End Sub 
+0

Спасибо !!! Эта помощь мне найти решение – dali1985

+0

@ user576998: через два месяца ?? –

+0

нет, но у меня было много дней, чтобы войти в систему, потому что у меня была проблема с моей учетной записью! Еще раз спасибо! – dali1985

0

Чтобы получить значение из третьего столбца вы можете перебирать через этот массив:

GridView.Rows[index].Cells[2].Value.ToString()); 

Пример:

String TextIn4thRow3rdColumn = myGridView.Rows[3].Cells[2].Value.ToString());