#c# #asp.net
#c# #asp.net
Вопрос:
Я создавал asp.net система опроса. все в порядке, но есть проблема, которая не объясняет, почему это происходит. например, каждый раз, когда я обновляю страницу с добавлением элемента в свой список элементов в элементе управления buttonlist. и каждый раз, когда я выбираю элемент, он просто показывает мне один элемент (например, everi time показывает мне ужасный элемент). вот мой код :
<asp:UpdatePanel ID="updatepanel1" runat="server">
<ContentTemplate>
<asp:Label ID="lblresult" runat="server" Text="Label"></asp:Label>
<br />
<asp:RadioButtonList ID="radVote" runat="server" Width="91px" DataSourceID="LinqDataSource1" DataTextField="Id" DataValueField="Id">
<asp:ListItem>perfect</asp:ListItem>
<asp:ListItem>good</asp:ListItem>
<asp:ListItem>bad</asp:ListItem>
<asp:ListItem>terrible</asp:ListItem>
</asp:RadioButtonList>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="EnglishClass1.DataClasses1DataContext" EntityTypeName="" TableName="Polls">
</asp:LinqDataSource>
<asp:Button ID="Savebtn" runat="server" Text="Save" BackColor="#40e023" ForeColor="Blue" OnClick="Savebtn_Click"/>
<asp:Button ID="Showbtn" runat="server" Text="Show" BackColor="#40e023" ForeColor="Blue" OnClick="Showbtn_Click"/>
amp;nbsp;
<asp:Label ID="lblpoll" runat="server" Text="" ForeColor="Red" Font-Italic="true" Font-Size="Larger"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
C # Код :
protected void Savebtn_Click(object sender, EventArgs e)
{
if (radVote.SelectedItem == null)
lblpoll.Text = "لطفا در نظرسنجی شرکت کنید";
else
countVote(radVote.SelectedItem.ToString());
}
protected void countVote(string Thevote)
{
try
{
string conn = ConfigurationManager.ConnectionStrings["EnglishDBConnectionString"].ToString();
DataClasses1DataContext db = new DataClasses1DataContext(conn);
Poll po = new Poll();
po.Vote = Thevote;
db.Polls.InsertOnSubmit(po);
db.SubmitChanges();
lblpoll.Text = "از حمایت شما متشکریم";
readXML();
}
catch (Exception)
{
lblpoll.Text = "متاسفیم در حال حاضر نمیتوان انجام دهید بغدا انجام دهید";
}
}
private void readXML()
{
string conn = ConfigurationManager.ConnectionStrings["EnglishDBConnectionString"].ToString();
DataClasses1DataContext db = new DataClasses1DataContext();
Poll po = new Poll();
var votes = from vote in db.Polls select vote;
int acount;
int bcount;
int ccount;
int dcount;
acount = 0;
bcount = 0;
ccount = 0;
dcount = 0;
foreach (var vote in votes)
{
if (vote.Vote == "perfect")
acount ;
if (vote.Vote == "good")
bcount ;
if (vote.Vote == "bad")
ccount ;
if (vote.Vote == "terrible")
dcount ;
}
double thetotal;
thetotal = acount bcount ccount dcount;
double apercent;
double bpercent;
double cpercent;
double dpercent;
apercent = (acount / thetotal) * 100;
bpercent = (bcount / thetotal) * 100;
cpercent = (ccount / thetotal) * 100;
dpercent = (dcount / thetotal) * 100;
lblresult.Visible = true;
lblresult.Text = "perfect:" acount "رای(" apercent "%).<br />";
lblresult.Text = "good:" acount "رای(" bpercent "%).<br />";
lblresult.Text = "bad:" acount "رای(" cpercent "%).<br />";
lblresult.Text = "terrible:" acount "رای(" dpercent "%).<br />";
}
protected void Showbtn_Click(object sender, EventArgs e)
{
readXML();
}
Комментарии:
1. Прежде всего, если у вас есть ошибки, удалите UdatePanel (пока вы их не устраните), затем выполните пошаговую отладку, чтобы найти вашу ошибку.
2. Хорошо , поблагодарите любым способом аристос
Ответ №1:
каждый раз, когда вы выбираете элемент, он переходит в countvote(), тогда результат всегда будет последним:
lblresult.Text = "perfect:" acount "رای(" apercent "%).<br />";
lblresult.Text = "good:" acount "رای(" bpercent "%).<br />";
lblresult.Text = "bad:" acount "رای(" cpercent "%).<br />";
lblresult.Text = "terrible:" acount "رای(" dpercent "%).<br />";
вы перезаписываете результат последним ужасным. Вам нужно объединить строки, чтобы показать все. Используйте stringbuilder для сохранения результата, а затем просто выполните lblresult.Text= StringBuilder .Tostring()
Комментарии:
1. извините, я не понимаю. не могли бы вы привести мне пример?
2. При записи в lblresult последнее значение будет сохраняться только в том случае, если вы не добавляете существующий текст, а перезаписываете его. Итак, вам нужно создать новый stringbuilder (), а затем использовать append (), чтобы добавить к нему все четыре результата опроса. Затем задайте текст, если lblresult