I have a Asp.net table control that I dynamically add rows from a SQL
database. Inside the table, I add radiobuttons and they all have
different ID numbers according to BindChain()
Looking In BindChain() Sub for the line:
AddHandler Rb.CheckedChang ed, AddressOf BindAssembly_Cl ick
I can't get the radiobutton to attach the same BindAssembly_Cl ick()
event for each radiobutton. In fact it is attaching an event with the
ID number and the page gets posted when I click on it. It's weird. I
don't know where it's getting that from. I am desperate, Please help
me.
Table HTML code generated
<table id="Tbchain" border="0"
style="border-width:1px;borde r-style:solid;">
<tr>
<td><input id="Radio0" type="radio" name="MySel" value="Radio0"
checked="checke d" onclick="__doPo stBack('Radio0' ,'')"
language="javas cript" /><label
for="Radio0">C1 88</label></td><td></td><td><img
src=chain_image s/C188.gif></td><td> </td>
</tr><tr>
<td><input id="Radio1" type="radio" name="MySel" value="Radio1"
onclick="__doPo stBack('Radio1' ,'')" language="javas cript" /><label
for="Radio1">D6 67</label></td><td></td><td><img
src=chain_image s/D667.gif></td><td> </td>
</tr><tr>
<td><input id="Radio2" type="radio" name="MySel" value="Radio2"
onclick="__doPo stBack('Radio2' ,'')" language="javas cript" /><label
for="Radio2">D8 1X</label></td><td></td><td><img
src=chain_image s/D81X.gif></td><td> </td>
</tr><tr>
<td><input id="Radio3" type="radio" name="MySel" value="Radio3"
onclick="__doPo stBack('Radio3' ,'')" language="javas cript" /><label
for="Radio3">D8 8K</label></td><td></td><td><img
src=chain_image s/D88K.gif></td><td> </td>
</tr><tr>
<td><input id="Radio4" type="radio" name="MySel" value="Radio4"
onclick="__doPo stBack('Radio4' ,'')" language="javas cript" /><label
for="Radio4">SC 78</label></td><td></td><td><img
src=chain_image s/SC78.gif></td><td> </td>
</tr>
</table>
I need to get this type of result:
<table id="Tbchain" border="0"
style="border-width:1px;borde r-style:solid;">
<tr>
<td><input id="Radio0" type="radio" name="MySel" value="Radio0"
checked="checke d" onclick="__doPo stBack('BindAss embly_Click','' )"
language="javas cript" /><label
for="Radio0">C1 88</label></td><td></td><td><img
src=chain_image s/C188.gif></td><td> </td>
</tr><tr>
<td><input id="Radio1" type="radio" name="MySel" value="Radio1"
onclick="__doPo stBack('BindAss embly_Click','' )" language="javas cript"
/><label for="Radio1">D6 67</label></td><td></td><td><img
src=chain_image s/D667.gif></td><td> </td>
</tr><tr>
<td><input id="Radio2" type="radio" name="MySel" value="Radio2"
onclick="__doPo stBack('BindAss embly_Click','' )" language="javas cript"
/><label for="Radio2">D8 1X</label></td><td></td><td><img
src=chain_image s/D81X.gif></td><td> </td>
</tr><tr>
<td><input id="Radio3" type="radio" name="MySel" value="Radio3"
onclick="__doPo stBack('BindAss embly_Click','' )" language="javas cript"
/><label for="Radio3">D8 8K</label></td><td></td><td><img
src=chain_image s/D88K.gif></td><td> </td>
</tr><tr>
<td><input id="Radio4" type="radio" name="MySel" value="Radio4"
onclick="__doPo stBack('BindAss embly_Click','' )" language="javas cript"
/><label for="Radio4">SC 78</label></td><td></td><td><img
src=chain_image s/SC78.gif></td><td> </td>
</tr>
</table>
Source Code
<%@ Page Language="VB" ContentType="te xt/html"
ResponseEncodin g="iso-8859-1" %>
<%@ import Namespace="Syst em.Web.UI.WebCo ntrols" %>
<%@ import Namespace="Syst em.Net" %>
<%@ import Namespace="Syst em.Data.SqlClie nt" %>
<%@ import Namespace="Syst em.Data" %>
<script language="VB" Debug="true" runat="server">
Public Const DB_CONN_STRING = "my connection"
Public cChainID as Integer
'Protected WithEvents optModify As
System.Web.UI.W ebControls.Radi oButton
Sub Page_Load(src As Object, e As EventArgs)
if not IsPostBack Then
BindManufacture r()
BindConveyorTyp e()
BindChain()
BindAssembly()
End if
End Sub
Sub BindManufacture r()
Dim strConn=DB_CONN _STRING
Dim mycn As SqlConnection = new SqlConnection(s trConn)
Dim SQL As String = "SELECT manufacturer FROM Sn_Rollers GROUP BY
manufacturer"
Dim myda As SqlDataAdapter = new SqlDataAdapter (SQL, mycn)
Dim ds As DataSet = new DataSet()
myda.Fill (ds,"Table1")
manufacturer.Da taTextField="ma nufacturer"
manufacturer.Da taValueField="m anufacturer"
manufacturer.Da taSource=ds
manufacturer.Da taBind()
End Sub
Sub BindConveyorTyp e()
Dim strConn=DB_CONN _STRING
Dim mycn As SqlConnection = new SqlConnection(s trConn)
Dim manuf As String = manufacturer.se lecteditem.valu e
Dim SQL As String = "SELECT manufacturer, convtp FROM Sn_Rollers
WHERE (manufacturer = '"+manuf+"') GROUP BY manufacturer, convtp"
Dim myda As SqlDataAdapter = new SqlDataAdapter (SQL, mycn)
Dim ds As DataSet = new DataSet()
myda.Fill (ds,"Table2")
convtype.DataTe xtField="convtp "
convtype.DataVa lueField="convt p"
convtype.DataSo urce=ds
convtype.DataBi nd()
BindChain()
End Sub
Sub BindChain()
Dim strConn=DB_CONN _STRING
Dim mycn As SqlConnection = new SqlConnection(s trConn)
Dim Smanufacturer As String = manufacturer.se lecteditem.valu e
Dim Sconvtype As String = convtype.select editem.value
Dim SQL As String = "SELECT manufacturer, convtp, chain FROM
Sn_Rollers WHERE (manufacturer = '"+Smanufacture r+"' AND convtp =
'"+Sconvtype+"' ) GROUP BY manufacturer, convtp, chain"
Response.Write( "CHAIN <br>"+ SQL + "<br><br>" )
Dim myda As SqlDataAdapter = new SqlDataAdapter (SQL, mycn)
Dim ds As DataSet = new DataSet()
myda.Fill (ds,"Table3")
'chain.DataSour ce=ds
'chain.DataBind ()
Dim i As integer
For i = 0 To ds.Tables("Tabl e3").Rows.Cou nt - 1
Dim tRow As New TableRow()
Dim tCell_1 As New TableCell()
Dim tCell_2 As New TableCell()
Dim tCell_3 As New TableCell()
Dim tCell_4 As New TableCell()
Rb = New RadioButton()
cChainID=i
Rb.ID = "Radio" + i.ToString()
Rb.Text = ds.Tables("Tabl e3").Rows(i).It em(2).ToString( )
Rb.GroupName="M ySel"
************ Here is the problem
*************** *************** ********
AddHandler Rb.CheckedChang ed, AddressOf BindAssembly_Cl ick
' It is not linking the same sub event BindAssembly_Cl ick() for each
radiobutton. Instead, it is adding an event with the ID name from
Rb.ID="Radio"+ i.ToString()
*************** ************ || *************** *************** ********
Rb.AutoPostBack = True
'Rb.Checked = True
tCell_1.Control s.Add(Rb)
tRow.Cells.Add( tCell_1)
tRow.Cells.Add( tCell_2)
Tbchain.Rows.Ad d(tRow)
tCell_3.Text="< img
src=chain_image s/"+Replace(ds.Ta bles("Table3"). Rows(i).Item(2) .ToString(),"
","") +".gif>"
tCell_4.Text="& nbsp;"
tRow.Cells.Add( tCell_3)
tRow.Cells.Add( tCell_4)
Tbchain.Rows.Ad d(tRow)
next
End Sub
function LoopTextBoxes(B yVal parent As Control) As String
Dim c As Control
Dim finish As Boolean = false
For Each c In parent.Controls
If c.GetType() Is GetType(RadioBu tton) Then
if Ctype(c, RadioButton).Ch ecked=True then
LoopTextBoxes=C type(c, RadioButton).Te xt
exit function
end if
End If
If (c.HasControls) Then
LoopTextBoxes(c )
End If
Next
End function
Sub BindAssembly()
Dim strConn=DB_CONN _STRING
Dim mycn As SqlConnection = new SqlConnection(s trConn)
Dim Smanufacturer As String = manufacturer.se lecteditem.valu e
Dim Sconvtype As String = convtype.select editem.value
Dim Schain As string
Schain = LoopTextBoxes(M e)
Dim SQL As String = "SELECT manufacturer, convtp, chain, assembly
FROM Sn_Rollers WHERE (manufacturer = '"+Smanufacture r+"' AND convtp =
'"+Sconvtype +"' AND chain = '"+Schain +"') GROUP BY manufacturer,
convtp, chain, assembly"
Response.write( SQL)
Dim myda As SqlDataAdapter = new SqlDataAdapter (SQL, mycn)
Dim ds As DataSet = new DataSet()
myda.Fill (ds,"Table4")
Dpassembly.Data TextField="asse mbly"
Dpassembly.Data ValueField="ass embly"
Dpassembly.Data Source=ds
Dpassembly.Data Bind()
End Sub
Sub BindConveyorTyp e_Click(sender As Object, e As EventArgs)
BindConveyorTyp e()
End Sub
Sub BindChain_Click (sender As Object, e As EventArgs)
BindChain()
End Sub
Sub BindAssembly_Cl ick(sender As Object, e As EventArgs)
BindAssembly()
End Sub
</script>
Thanks
Rod