как создать asp.net система голосования?

#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