Datagrid question

M

MSNEWS

Hi

I have a datagrid with 8 Columns, columns called Monday - Sunday, and a
column called TOTAL. The Monday - Sunday columns are template columns with
a textbox inside. The TOTAL column is a label column.

When the user enteres numbers into the Monday - Sunday columns I want TOTAL
to add up all the columns on the current row.

I guess this needs to be done with client side vbscript? But I have no clue
where to start.

Also could somebody give me hints on how to validate by Monday - Sunday
columns so that they can only enter numbers between 0 and 24.

Thanks
 
T

Thomas Dodds

HTML (aspx)

<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="Mon">
<ItemTemplate>
<asp:TextBox id="TextBox1" runat="server" Width="30px" MaxLength="2"
AutoPostBack="False"></asp:TextBox><BR>
<asp:CompareValidator id="CompareValidator1" runat="server"
ControlToValidate="TextBox1" Operator="DataTypeCheck" Type="Integer"
Font-Size="XX-Small">Numbers Only!</asp:CompareValidator><BR>
<asp:RangeValidator id="RangeValidator1" runat="server"
ControlToValidate="TextBox1" Font-Size="XX-Small" MaximumValue="24"
MinimumValue="0">Must be between 0 - 24</asp:RangeValidator>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Tues">
<ItemTemplate>
<asp:TextBox id="Textbox2" runat="server" AutoPostBack="False"
MaxLength="2" Width="30px"></asp:TextBox><br>
<asp:CompareValidator id="Comparevalidator2" runat="server"
ControlToValidate="Textbox2" Operator="DataTypeCheck" Type="Integer"
Font-Size="XX-Small">Numbers Only!</asp:CompareValidator><br>
<asp:RangeValidator id="Rangevalidator2" runat="server"
ControlToValidate="Textbox2" Font-Size="XX-Small" MaximumValue="24"
MinimumValue="0">Must be between 0 - 24</asp:RangeValidator>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Wed">
<ItemTemplate>
<asp:TextBox id="Textbox3" runat="server" AutoPostBack="False"
MaxLength="2" Width="30px"></asp:TextBox><br>
<asp:CompareValidator id="Comparevalidator3" runat="server"
ControlToValidate="Textbox3" Operator="DataTypeCheck" Type="Integer"
Font-Size="XX-Small">Numbers Only!</asp:CompareValidator><br>
<asp:RangeValidator id="Rangevalidator3" runat="server"
ControlToValidate="Textbox3" Font-Size="XX-Small" MaximumValue="24"
MinimumValue="0">Must be between 0 - 24</asp:RangeValidator>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Thurs">
<ItemTemplate>
<asp:TextBox id="Textbox4" runat="server" AutoPostBack="False"
MaxLength="2" Width="30px"></asp:TextBox><br>
<asp:CompareValidator id="Comparevalidator4" runat="server"
ControlToValidate="Textbox4" Operator="DataTypeCheck" Type="Integer"
Font-Size="XX-Small">Numbers Only!</asp:CompareValidator><br>
<asp:RangeValidator id="Rangevalidator4" runat="server"
ControlToValidate="Textbox4" Font-Size="XX-Small" MaximumValue="24"
MinimumValue="0">Must be between 0 - 24</asp:RangeValidator>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Fri">
<ItemTemplate>
<asp:TextBox id="Textbox5" runat="server" AutoPostBack="False"
MaxLength="2" Width="30px"></asp:TextBox><br>
<asp:CompareValidator id="Comparevalidator5" runat="server"
ControlToValidate="Textbox5" Operator="DataTypeCheck" Type="Integer"
Font-Size="XX-Small">Numbers Only!</asp:CompareValidator><br>
<asp:RangeValidator id="Rangevalidator5" runat="server"
ControlToValidate="Textbox5" Font-Size="XX-Small" MaximumValue="24"
MinimumValue="0">Must be between 0 - 24</asp:RangeValidator>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Sat">
<ItemTemplate>
<asp:TextBox id="Textbox6" runat="server" AutoPostBack="False"
MaxLength="2" Width="30px"></asp:TextBox><br>
<asp:CompareValidator id="Comparevalidator6" runat="server"
ControlToValidate="Textbox6" Operator="DataTypeCheck" Type="Integer"
Font-Size="XX-Small">Numbers Only!</asp:CompareValidator><br>
<asp:RangeValidator id="Rangevalidator6" runat="server"
ControlToValidate="Textbox6" Font-Size="XX-Small" MaximumValue="24"
MinimumValue="0">Must be between 0 - 24</asp:RangeValidator>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Sun">
<ItemTemplate>
<asp:TextBox id="Textbox7" runat="server" AutoPostBack="False"
MaxLength="2" Width="30px"></asp:TextBox><br>
<asp:CompareValidator id="Comparevalidator7" runat="server"
ControlToValidate="Textbox7" Operator="DataTypeCheck" Type="Integer"
Font-Size="XX-Small">Numbers Only!</asp:CompareValidator><br>
<asp:RangeValidator id="Rangevalidator7" runat="server"
ControlToValidate="Textbox7" Font-Size="XX-Small" MaximumValue="24"
MinimumValue="0">Must be between 0 - 24</asp:RangeValidator>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Total">
<ItemTemplate>
<asp:Label id="lblTotal" runat="server">0</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn Text="Sum" ButtonType="PushButton"
CommandName="SUM"></asp:ButtonColumn>
</Columns>
</asp:datagrid>

Codebehind (vb):

Dim ds As New DataSet("ds")

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here

If Not IsPostBack() Then
fillGrid()
End If

End Sub

Private Sub fillGrid()
Dim conn As New OleDbConnection(Session("UserDBConnString"))
Dim adpt As New OleDbDataAdapter("SELECT * FROM DUAL WHERE ROWNUM <=
1", conn) 'gets me a row quickly from Oracle!!


conn.Open()
adpt.Fill(ds)
DataGrid1.DataSource = ds.Tables(0).DefaultView
DataGrid1.DataBind()
conn.Close()
End Sub

Private Sub calcTotal(ByVal intRow As Integer)
Dim dgi As DataGridItem = DataGrid1.Items(intRow)
Dim intSum As Integer = 0
Dim ctrl As Control
Dim tb As TextBox
Dim i As Integer = 0

For i = 0 To dgi.Cells.Count - 1
For Each ctrl In dgi.Cells(i).Controls
If InStr(LCase(ctrl.GetType.ToString), "textbox") <> 0 Then
tb = CType(ctrl, TextBox)
If Not tb.Text = "" Then
intSum += CInt(tb.Text)
End If
End If
Next ctrl
Next i

Dim lbl As Label = dgi.FindControl("lblTotal")
lbl.Text = CStr(intSum)

End Sub

Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.ItemCommand
If e.CommandName = "SUM" Then
calcTotal(e.Item.ItemIndex)
End If
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,780
Messages
2,569,611
Members
45,270
Latest member
TopCryptoTwitterChannels_

Latest Threads

Top