Hi RichardSa,
Refer below Sample.
HTML
<style type="text/css">
#middleTable > input[type=radio] {
height: 25px !important;
width: 25px !important;
}
</style>
<asp:Label ID="lblVotersID" runat="server" Text="Helen005" />
<asp:Label ID="Adminlbl" runat="server" Text="Richard" />
<asp:Label ID="electlbl" runat="server" Text="2021 Youth Elections" />
<asp:DataList runat="server" ID="dlquestion" CssClass="row" CellPadding="4" OnItemDataBound="dlquestion_ItemDataBound" Width="100%">
<ItemTemplate>
<div class="card p-3 mb5 bg-white rounded" style="border: 1px solid #d1d5d4; margin: 0 auto; padding: 10px; width: 100%; border-radius: 10px;">
<asp:Label ID="lblQuestion" Text='<%# Eval("BallotQuestion") %>' runat="server" Font-Bold="true" Font-Names="Varela Round" Font-Size="16pt" />
<asp:Repeater ID="rptOptions" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate></HeaderTemplate>
<ItemTemplate>
<div runat="server" id="innerTable">
<div class="" id="middleTable">
<%--<input type="radio" runat="server" id="checkbx" style="height: 25px; width: 25px;" />--%>
<asp:RadioButton ID="rbtBallotQuestion" runat="server" />
<asp:HiddenField ID="hfBallotQuestion" runat="server" Value='<%#Eval("BallotQuestion")%>' />
<img alt="" src="images/home/lock.png" height="80" />
<br />
<div>
<asp:Label ID="Label1" runat="server" Text="NAME: " Font-Bold="true" Font-Size="13pt"></asp:Label>
<asp:Label ID="candlbl" runat="server" Text='<%# Eval("CandidateName") %>' />
</div>
<br />
<div>
<asp:Label ID="Label2" runat="server" Text="BIO: " Font-Bold="true" Font-Size="13pt"></asp:Label>
<asp:Label ID="biolabel" Text='<%# Eval("Shortbio") %>' runat="server" />
</div>
<br />
<br />
</div>
<div class="">
<br />
<asp:Button ID="Button2" runat="server" Text="Edit" CssClass="btn btn-info" Font-Size="10pt" />
<asp:Button ID="Button3" runat="server" Text="Delete" CssClass="btn btn-danger" Font-Size="10pt" />
</div>
<hr />
</div>
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="Button1" runat="server" Text="Add Option" CssClass="btn btn-primary" />
</div>
</ItemTemplate>
</asp:DataList>
<asp:Button ID="Button4" runat="server" CssClass="btn btn-primary navbar-btn" Text="SUBMIT YOUR BALLOT" Width="50%" OnClick="OnSubmit" />
<script type="text/javascript">
function setExclusiveRadioButton(group, current) {
regx = new RegExp(group);
for (i = 0; i < document.forms[0].elements.length; i++) {
elm = document.forms[0].elements[i]
if (elm.type == 'radio') {
if (regx.test(elm.value)) {
elm.checked = false;
}
}
}
current.checked = true;
}
</script>
Namespaces
C#
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
VB.Net
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string query = "SELECT DISTINCT BallotQuestion FROM Election WHERE AdminName = '" + Adminlbl.Text + "' AND ElectionName = '" + electlbl.Text + "'";
DataTable dt = GetData(query);
dlquestion.RepeatColumns = dt.Rows.Count;
dlquestion.DataSource = dt;
dlquestion.DataBind();
dlquestion.RepeatColumns = 1;
dlquestion.RepeatDirection = RepeatDirection.Vertical;
}
}
protected void dlquestion_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string BallotQuestion = (e.Item.FindControl("lblQuestion") as Label).Text;
Repeater rptOptions = e.Item.FindControl("rptOptions") as Repeater;
string query = "SELECT '" + BallotQuestion + "' AS BallotQuestion,CandidateName, Shortbio FROM Election WHERE BallotQuestion = '" + BallotQuestion + "' AND AdminName = '" + Adminlbl.Text + "' AND ElectionName = '" + electlbl.Text + "'";
rptOptions.DataSource = GetData(query);
rptOptions.DataBind();
}
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem | e.Item.ItemType == ListItemType.Item)
{
RadioButton radio = (RadioButton)e.Item.FindControl("rbtBallotQuestion");
HiddenField hfBallotQuestion = (HiddenField)e.Item.FindControl("hfBallotQuestion");
radio.Attributes["value"] = hfBallotQuestion.Value;
radio.Attributes.Add("onclick", "setExclusiveRadioButton('" + hfBallotQuestion.Value + "', this)");
}
}
private DataTable GetData(string query)
{
SqlCommand cmd = new SqlCommand(query);
using (SqlConnection con = new SqlConnection("Server=.;DataBase=Test;UID=sa;PWD=pass@123;"))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
}
protected void OnSubmit(object sender, EventArgs e)
{
foreach (DataListItem question in dlquestion.Items)
{
string votersID = lblVotersID.Text;
string adminName = Adminlbl.Text;
string electionName = electlbl.Text;
string ballotQuestion = (question.FindControl("lblQuestion") as Label).Text;
Repeater rptOptions = question.FindControl("rptOptions") as Repeater;
foreach (RepeaterItem option in rptOptions.Items)
{
RadioButton radio = option.FindControl("rbtBallotQuestion") as RadioButton;
if (radio.Checked)
{
string votes = ((Label)option.FindControl("candlbl")).Text;
// Cod to save the votes in database.
string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
string query = "INSERT INTO Votes VALUES(@AdminName,@ElectionName,@BallotQuestions,@Votes,@Voters_ID)";
using (SqlConnection con = new SqlConnection(conString))
{
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@AdminName", adminName);
cmd.Parameters.AddWithValue("@ElectionName", electionName);
cmd.Parameters.AddWithValue("@BallotQuestions", ballotQuestion);
cmd.Parameters.AddWithValue("@Votes", votes);
cmd.Parameters.AddWithValue("@Voters_ID", votersID);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim query As String = "SELECT DISTINCT BallotQuestion FROM Election WHERE AdminName = '" & Adminlbl.Text & "' AND ElectionName = '" + electlbl.Text & "'"
Dim dt As DataTable = GetData(query)
dlquestion.RepeatColumns = dt.Rows.Count
dlquestion.DataSource = dt
dlquestion.DataBind()
dlquestion.RepeatColumns = 1
dlquestion.RepeatDirection = RepeatDirection.Vertical
End If
End Sub
Protected Sub dlquestion_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs)
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
Dim BallotQuestion As String = (TryCast(e.Item.FindControl("lblQuestion"), Label)).Text
Dim rptOptions As Repeater = TryCast(e.Item.FindControl("rptOptions"), Repeater)
Dim query As String = "SELECT '" & BallotQuestion & "' AS BallotQuestion,CandidateName, Shortbio FROM Election WHERE BallotQuestion = '" & BallotQuestion & "' AND AdminName = '" & Adminlbl.Text & "' AND ElectionName = '" + electlbl.Text & "'"
rptOptions.DataSource = GetData(query)
rptOptions.DataBind()
End If
End Sub
Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
Dim radio As RadioButton = CType(e.Item.FindControl("rbtBallotQuestion"), RadioButton)
Dim hfBallotQuestion As HiddenField = CType(e.Item.FindControl("hfBallotQuestion"), HiddenField)
radio.Attributes("value") = hfBallotQuestion.Value
radio.Attributes.Add("onclick", "setExclusiveRadioButton('" & hfBallotQuestion.Value & "', this)")
End If
End Sub
Private Function GetData(ByVal query As String) As DataTable
Dim cmd As SqlCommand = New SqlCommand(query)
Using con As SqlConnection = New SqlConnection("Server=.;DataBase=Test;UID=sa;PWD=pass@123;")
Using sda As SqlDataAdapter = New SqlDataAdapter()
cmd.Connection = con
sda.SelectCommand = cmd
Using dt As DataTable = New DataTable()
sda.Fill(dt)
Return dt
End Using
End Using
End Using
End Function
Protected Sub OnSubmit(ByVal sender As Object, ByVal e As EventArgs)
For Each question As DataListItem In dlquestion.Items
Dim votersID As String = lblVotersID.Text
Dim adminName As String = Adminlbl.Text
Dim electionName As String = electlbl.Text
Dim ballotQuestion As String = (TryCast(question.FindControl("lblQuestion"), Label)).Text
Dim rptOptions As Repeater = TryCast(question.FindControl("rptOptions"), Repeater)
For Each [option] As RepeaterItem In rptOptions.Items
Dim radio As RadioButton = TryCast([option].FindControl("rbtBallotQuestion"), RadioButton)
If radio.Checked Then
Dim votes As String = (CType([option].FindControl("candlbl"), Label)).Text
Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Dim query As String = "INSERT INTO Votes VALUES(@AdminName,@ElectionName,@BallotQuestions,@Votes,@Voters_ID)"
Using con As SqlConnection = New SqlConnection(conString)
Dim cmd As SqlCommand = New SqlCommand(query, con)
cmd.Parameters.AddWithValue("@AdminName", adminName)
cmd.Parameters.AddWithValue("@ElectionName", electionName)
cmd.Parameters.AddWithValue("@BallotQuestions", ballotQuestion)
cmd.Parameters.AddWithValue("@Votes", votes)
cmd.Parameters.AddWithValue("@Voters_ID", votersID)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End If
Next
Next
End Sub