protected void LinkButton_Click(Object sender, EventArgs e)
{
String MyConnection2 = "Server=localhost;database=ovs;Uid=root;password=; Convert Zero Datetime=True";
DateTime time = DateTime.Now; // Use current time
string format = "yyyy-MM-dd HH:mm:ss";
string UserName4 = HttpContext.Current.User.Identity.Name;
GridViewRow grdrow = (GridViewRow)((LinkButton)sender).NamingContainer;
Label lblStudentId = (Label)grdrow.Cells[0].FindControl("lblID");
string studentId = lblStudentId.Text;
String query = "insert into voting (CandidateStudentID,voterStudentID,DateTime)values ('" + lblStudentId.Text + "','" + Session["UserName"].ToString() + "','" + time.ToString(format) + "')";
foreach (GridViewRow row in GridView2.Rows)
{
Label lblVoter = row.FindControl("lblVoter") as Label;
string voterID = lblVoter.Text;
if (Session["UserName"].ToString().Equals(lblVoter.Text))
{
Label1.Text = "You voted before";
}
}
MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
MySqlCommand MyCommand2 = new MySqlCommand(query, MyConn2);
MySqlDataReader MyReader2;
MyConn2.Open();
MyReader2 = MyCommand2.ExecuteReader();
Label2.Text = "Thank you for You Vote";
}
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" Font-Size="Medium">
<Columns>
<asp:TemplateField HeaderText="Student ID">
<ItemTemplate>
<asp:Label ID="lblVoter" runat="server" Width="150px" Text='<%#Eval("voterStudentID") %>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void loadCandidate()
{
con.Open();
MySqlCommand cmd = new MySqlCommand("select studentID ,name from candidate ", con);
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows == true)
{
GridView1.DataSource = dr;
GridView1.DataBind();
con.Close();
con.Open();
MySqlCommand cmd2 = new MySqlCommand("select voterStudentID from voting ", con);
MySqlDataReader dr2 = cmd2.ExecuteReader();
GridView2.DataSource = dr2;
GridView2.DataBind();
}
}
Показване на ID на студент в gridview2
Искам да предотвратя дублиране на гласуването в базата данни. Сега съм изправен пред проблем, който, когато потребителят влезе като първи потребители в таблицата StudentID, която е 1909404, когато 1909404 вече съществува в базата данни, ще покаже съобщение за грешка. Но когато потребителят влезе като втори потребител в таблицата StudentID, която е 1909362, въпреки че потребителският идентификатор вече съществува, няма да покаже съобщението за грешка. Бих искал да покажа съобщението за грешка, докато потребителският идентификатор съществува в базата данни (което означава, че те са гласували преди).
GridView2
получава данните си и колко често се актуализират? - person JohnG   schedule 20.10.2020if (Session["UserName"].ToString().Equals(lblID.Text)) …
, постави ли точка на прекъсване там и провери ли стойностите? С други думи, АКО идентификаторът Е вGridView2
, ТОГАВА... това също ли е текущиятSession[“UserName”]
? Очевидно, ако те са едни и същи и не се поставя етикетът „Вие сте гласували преди“… тогава се случва нещо друго. Може ли да се провери, че когато стойностите са еднакви, това пада до часттаelse
на оператораif
? ИЛИ е възможноlabel1.Text
да се настрои на нещо друго след този код? - person JohnG   schedule 20.10.2020GridView2
, за да определите дали текущият потребител е в мрежата. - person JohnG   schedule 20.10.2020GridView2
, за да определите далиSession[“UserName”]
е равно на един от редовете в мрежата. В момента кодът разглежда САМО първия ред…Label lblID = (Label)GridView2.Rows[0].FindControl("lblVoter");
Ето защо числата не съвпадат на втория номер. Вашият код трябва да премине през ВСИЧКИ редове и ако НЕ бъде намерен, те могат да гласуват. Очевидно, ако името Е намерено, тогава можете да излезете от цикъла и да публикувате съобщението „вие гласувахте“. - person JohnG   schedule 20.10.2020foreach
… Искате само да проверите дали идентификаторът е равен на един от идентификаторите вGridView2
АКО бъде намерено съвпадение, просто публикувайте гласуваното от вас съобщение и се върнете… не е необходимо нищо повече. Ако обаче излезете от цикълаforeach
и кодът НЕ се е върнал... тогава те могат да гласуват. Т.е.…foreach (row in grid2) if (names are equal) then post can’t vote message and exit
… Не е необходим операторelse
и завършване на цикъла за всеки. Ако „ИЗЛЕЗЕТЕ“ от цикълаforeach
, това означава, че името НЕ е намерено... тогава те могат да гласуват. - person JohnG   schedule 20.10.2020