0

我想在我的银行应用程序的选取框标记内显示新闻,但它没有发生。请有人帮我看看我的代码有什么错误。这是我的代码:

<marquee bgcolor="silver" direction="left" id="marq1" runat="server" behavior="scroll" scrolldelay="80" style="height: 19px" width="565">
<% 
   String se = Session["countnews"].ToString();
   for (int i = 0; i < int.Parse("" +se); i++)
   { %>
       <strong><%Response.Write("&nbsp;&nbsp;" + Session["news"+i] + "&nbsp;&nbsp;"); %></strong>
<% } %>
</marquee>

public class News
{
    DataSet ds = new DataSet("Bank");
    SqlConnection conn;
    String check;
    SqlDataAdapter sda;
    int i;
    public string News_Name;
    public int Count_News;
public int newsticker()
    {
        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BankingTransaction"].ConnectionString.ToString());
        check = "Select NewsTitle from News where NewsStatus = 'A'";
        sda = new SqlDataAdapter(check, conn);
        sda.Fill(ds, "News");
        if (ds.Tables[0].Rows.Count > 0)
        {
            for (i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                News_Name =i+ ds.Tables[0].Rows[i].ItemArray[0].ToString();
            }
            Count_News = ds.Tables[0].Rows.Count;        }
        else
        {
            News_Name =0+ "Welcome to WestSide Bank Online Web site!";
            Count_News = 1;
        }
        return int.Parse(Count_News.ToString());       
    }

protected void Page_Load(object sender, EventArgs e)
    {
        News obj = new News();
        try
        {
            obj.newsticker();
            Session["news"] = obj.News_Name.ToString();
            Session["countnews"] = obj.Count_News.ToString();       
        }
        catch (SqlException ex)
        {
            Response.Write("Error in login" + ex.Message);
            Response.Redirect("Default.aspx");
        }
        finally
        {
            obj = null;
        } 
    }
4

1 回答 1

0

会话["新闻"+i]

但是您没有将任何称为“新闻”加整数的内容放入 Session 范围内。您正在迭代数据集并将每个标题(神秘地以整数作为前缀)存储为单个 News 对象中的“News_Name”属性。每次写入“News_Name”都会覆盖前一个,因此只有最后一个标题存储在 Session[“news”] 的末尾。

在任何情况下,Session 是存储每页数据的麻烦地方:Session 用于在多个页面加载后持续存在的数据,如果用户同时加载两个页面,则可能会产生干扰。

此外,如果新闻的标题可能包含“ <' 其中的人物。而且我不太确定你为什么要使用'newscount'整数,将其转换为字符串,再次将其转换为字符串,再次将其转换为字符串,然后最终将其解析回整数。(?)

一般来说,这似乎是经典 ASP 和代码隐藏技术的一种令人不安的组合。在我看来,应该可以使用以下内容更简单地编写它:

<asp:Repeater DataSourceID="TickerSource" runat="server">
    <ItemTemplate><strong>
        <%# Eval("NewsTitle") %>
    </strong></ItemTemplate>
</asp:Repeater>

<asp:SqlDataSource ID="TickerSource" runat="server"
    SelectCommand="SELECT NewsTitle FROM News WHERE NewsStatus='A'"
    ConnectionString="<%$ ConnectionStrings:BankingTransaction %>"
/>

[免责声明:我一生中从未真正编写过一行 ASP.NET,因此这可能无法按原样工作。欢迎更多精通 .NET 的用户进行编辑。]

于 2009-03-30T15:41:50.520 回答