解决两个问题,给200分

「已注销」 2008-07-07 06:21:33
第一:aspx页面显示flash问题
<object id="picshow" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,20,0 "
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" style="width: 320px; height: 200px"
align="middle">
<param name="Movie" value="media/picshow.swf" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="quality" value="high" />
<embed src="media/picshow.swf" quality="high" width="320" height="200" name="picshow"
align="middle" allowscriptaccess="sameDomain" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>


在media文件夹里有个picshow.swf,是一个图片滚动的flash,它要调用xml文件来获取图片名称和图片路径。
但是当页面在浏览器中运行时,显示flash的地方为一片空白,当把鼠标放到那里时,有迅雷提示下载的图标
出现,说明是有flash存在的,把它下下来之后也是一片空白。估计是读取不到xml文件。
但是我用其他不用读取xml文件 的flash代替时,也是一片空白!!搞不清哪里出错了。



第二:存储过程截取字符串问题

举个例子
有一个datalist
dl_top_humanist.DataSource = CC.GetDataSet("EXEC Select_Top_humanist");
dl_top_humanist.DataKeyField = "ID";
dl_top_humanist.DataBind();

通过调用存储过程Select_Top_humanist来得到点击率最高的前5条新闻。

存储过程Select_Top_humanist
CREATE PROCEDURE  Select_Top_humanist

AS

SELECT TOP 5
[ID],
Title,
HitCount

FROM news

WHERE

StyleID = 1 AND TypeID = 5

ORDER BY HitCount DESC
GO



datalist前台代码

<asp:DataList ID="dl_top_humanist" runat="server" OnItemCommand="dl_humanist_ItemCommand"
BackColor="White" Width="200px" Font-Bold="False" Font-Italic="False" Font-Overline="False"
Font-Strikeout="False" Font-Underline="False" ForeColor="#003366" Height="106px">
<ItemTemplate>
<table>
<tr>
<td class="td1">
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/item.gif" />
</td>
<td class="td2">
<asp:LinkButton ID="lbtnTitle" runat="server" CausesValidation="False" CommandName="select"
ForeColor="Green" Width="190px" Font-Size="10pt"><%# DataBinder.Eval(Container.DataItem,"title") %></asp:LinkButton> 这里绑定内容
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle ForeColor="Blue" Font-Bold="False" Font-Italic="False" Font-Overline="False"
Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" />
</asp:DataList>



这样提取出来的新闻标题有的会超过长度。所以我想在存储过程里截取字符串,超过长度就加...
这个存储过程应该如何写?


等待高手解答!!!
...全文
242 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2008-07-09
  • 打赏
  • 举报
回复
搞了半天,是路径问题。我把那个flash文件和相关的文件都放在根目录下,就可以正常显示了。

而且这正常显示也很奇怪。我是先用火狐浏览器打开首页,可以显示flash,虽然有点错位,不过是小问题。
再用IE打开,也可以正常显示了。

但是如果第一次用IE直接打开的话,就看不到了,一片空白。想来想去也想不通。

感谢诸位的指导,令我学到不少。

yfqvip 回复得最详细,200分给你了,晕,只能加一次分,其他人给不了分了,实在不好意思。

很奇怪,有的帖子竟然可以可以给300,400分。
mike1lainet 2008-07-08
  • 打赏
  • 举报
回复
来晚了,问题正解楼上都有了,友情up...
qq22345111 2008-07-08
  • 打赏
  • 举报
回复
FLASH读xml文件的时候,把XML的路径改成相对路径!
问题二
C# codeprotected static string LeftTitleFormat(string title)
{
if (title.Length <= 24)
{
return title;

}
else
{

string newt = title.Substring(0, 24);
if (newt.LastIndexOf(""") > -1 || newt.LastIndexOf("(") > -1)
{
if (newt.LastIndexOf("(") >= 21)
{
int len = newt.LastIndexOf("(") + 3;
if (len <= title.Length)
return title.Substring(0, len) + "…";
else return title.Substring(0, len - 2) + "…";
}
if (newt.IndexOf(""") >= 0)
return title;

else return title.Substring(0, 24) + "…";
}
else { return newt + "…"; }
}
}
chengqscjh 2008-07-08
  • 打赏
  • 举报
回复
问题1. 路径问题或是插件
2.如果数据量不大的话就在前台截取比较好
满衣兄 2008-07-08
  • 打赏
  • 举报
回复
1.首先确定FLASH是否正确:打开一个空白IE,把FLASH拖放到里面可以看到效果.
如果FLASH本身没有问题,那么打开一个DV,把FLASH拖放到DV里,用对应的代码替换现在的代码,注意路径.
修改成这样应该没问题了:

<OBJECT codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
height="148" width="930" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" VIEWASTEXT>
<PARAM NAME="_cx" VALUE="24606">
<PARAM NAME="_cy" VALUE="3916">
<PARAM NAME="FlashVars" VALUE="">
<PARAM NAME="Movie" VALUE="../images/menu.swf">
<PARAM NAME="Src" VALUE="../images/menu.swf">
<PARAM NAME="WMode" VALUE="Window">
<PARAM NAME="Play" VALUE="-1">
<PARAM NAME="Loop" VALUE="-1">
<PARAM NAME="Quality" VALUE="High">
<PARAM NAME="SAlign" VALUE="">
<PARAM NAME="Menu" VALUE="-1">
<PARAM NAME="Base" VALUE="">
<PARAM NAME="AllowScriptAccess" VALUE="">
<PARAM NAME="Scale" VALUE="ShowAll">
<PARAM NAME="DeviceFont" VALUE="0">
<PARAM NAME="EmbedMovie" VALUE="0">
<PARAM NAME="BGColor" VALUE="">
<PARAM NAME="SWRemote" VALUE="">
<PARAM NAME="MovieData" VALUE="">
<PARAM NAME="SeamlessTabbing" VALUE="1">
<PARAM NAME="Profile" VALUE="0">
<PARAM NAME="ProfileAddress" VALUE="">
<PARAM NAME="ProfilePort" VALUE="0">
<PARAM NAME="AllowNetworking" VALUE="all">
<PARAM NAME="AllowFullScreen" VALUE="false">
<embed src="../images/menu.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width="930" height="148"> </embed>
</OBJECT>

如果黑是不能正常显示,那么是你装了某种插件,在包含FLASH的页面加上如下代码(放到JS文件,引用即可):


var __embed_target_id = null;

var __embed_tags = {object:true,embed:true,applet:true}
if(document.attachEvent){
document.attachEvent('onreadystatechange',
function embed_patch(){
if(__embed_target_id===null){
var __target = document;
}else{
var __target = document.getElementById(__embed_target_id);
}
if (document.readyState == "complete"){
function _replace(obj){
var obj_re = document.createElement(obj.outerHTML);
obj.parentNode.replaceChild(obj_re,obj);
}
function _inner(obj){
obj.insertAdjacentHTML('beforeBegin',obj.outerHTML);
obj.parentNode.removeChild(obj);
}
if(__embed_tags.object===true){
var objs = __target.getElementsByTagName('object');
var i = objs.length;
while(i-->0){
_inner(objs[i]);
}
}
if(__embed_tags.embed===true){
var objs = __target.getElementsByTagName('embed');
var i = objs.length;
while(i-->0){
_replace(objs[i])
}
}
if(__embed_tags.applet===true){
var objs = __target.getElementsByTagName('applet');
var i = objs.length;
while(i-->0){
_replace(objs[i])
}
}
}
}
);
}

2.如果你的数据两不大,写在存储过程或者是ASPX或者.CS文件中没有多大区别了.
如果你的数据两比较大,例如一个标题很长,那么我建议你写在存储过程里.这样你的页面接受到的数据是在存储过程里截取之后的,数据两比较小了,加快了数据显示的速度.可以把要截取的长度做为参数传递,这样更为灵活.实现方法和上面写的一样,只是多了个参数,建议楼主自己写写看,我就不帮你写了.
另外不论是在存储过程还是在代码中这样截取,都有一个弊端,就是中英的问题,也就是你截取之后的同样长度的字符串,英文要比中文短很多,很难看.可以考虑用JS实现截取,我这没有现成的代码,只有个类似的,不知道对你有没有帮助
<script language="javascript">
function flushbyte()
{
var msgtext = document.getElementById('TextBox3').innerText;
//var length = document.getElementById('TextBox3').innerText.length;
var i=0,l=0,lastl;
while(i<msgtext.length)
{
var temp=msgtext.charAt(i);
if (escape(temp).length > 4)
l+=2;
else if (temp!='\r')
l++;
if(l>80)
{
alert('<%=RM.GetString("bdMessageSendTishi005")%>');
document.getElementById('TextBox3').innerText=document.getElementById('TextBox3').innerText.substr(0,i);
break;
return false;
}
lastl = l;
i++;
}
document.getElementById('divByte').childNodes[0].data=lastl;
}
</script>

hy_lihuan 2008-07-08
  • 打赏
  • 举报
回复
问题1. 路径问题;你下载看看就知道了;
jerry_zuo 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yuxuanji 的回复:]
问题1. 路径问题,上面有朋友说了

问题2. 3楼正解 ,不过最好考虑标点符号被分割的问题

.aspx.cs


C# codeprotected static string LeftTitleFormat(string title)
{
if (title.Length <= 24)
{
return title;

}
else
{

string newt = title.Substring(0, 24);
if (newt.LastIndexOf(""") > -1 ||…
[/Quote]
关于问题1,
先确定问题嘛。别先瞎折腾,简单的 就吧他 切入一个 什么 都没有的html 里面,这样就知道 是 flash本身的问题 还是 其他的问题,如果是 flash本身的问题 ,路径的问题的 估计你也 看的出来 。我建议你先找问题吧!
  • 打赏
  • 举报
回复
回帖是一种美德!传说每天回帖即可获得 10 分可用分!
wszhoho 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bluecountry 的回复:]
这个flash我从这个地址下的,http://www.sinker.cn/html/down/galley2/20070902/864.shtml
是一个图片展示的flash。

我有把这个flash放到项目media文件夹中的。

我用其他flash也试过了,但是还是显示为一片空白。

我用flash8发布成html,在这个html中可以正常显示,然后我把html里的object部分拷到
我的aspx中,运行就看不到了,显示为一片空白。

不知为什么...
[/Quote]

少了一个js文件
LutzMark 2008-07-08
  • 打赏
  • 举报
回复
问题1. 路径问题,上面有朋友说了

问题2. 3楼正解 ,不过最好考虑标点符号被分割的问题

.aspx.cs

protected static string LeftTitleFormat(string title)
{
if (title.Length <= 24)
{
return title;

}
else
{

string newt = title.Substring(0, 24);
if (newt.LastIndexOf(""") > -1 || newt.LastIndexOf("(") > -1)
{
if (newt.LastIndexOf("(") >= 21)
{
int len = newt.LastIndexOf("(") + 3;
if (len <= title.Length)
return title.Substring(0, len) + "…";
else return title.Substring(0, len - 2) + "…";
}
if (newt.IndexOf(""") >= 0)
return title;

else return title.Substring(0, 24) + "…";
}
else { return newt + "…"; }
}
}

aspx

  <%# LeftTitleFormat(Eval("title").ToString().Trim())%>
dengchenlu 2008-07-08
  • 打赏
  • 举报
回复
帮顶
「已注销」 2008-07-08
  • 打赏
  • 举报
回复
这个flash我从这个地址下的,http://www.sinker.cn/html/down/galley2/20070902/864.shtml
是一个图片展示的flash。

我有把这个flash放到项目media文件夹中的。

我用其他flash也试过了,但是还是显示为一片空白。

我用flash8发布成html,在这个html中可以正常显示,然后我把html里的object部分拷到
我的aspx中,运行就看不到了,显示为一片空白。

不知为什么...
niitnanfeng 2008-07-07
  • 打赏
  • 举报
回复
问题二好多人都回答了.
niitnanfeng 2008-07-07
  • 打赏
  • 举报
回复
问题一:
你可能是直接复制别人的代码过来的,忘记把picshow.swf那文件也放到你的项目中去了.
brz97 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bluecountry 的回复:]
截取字符串解决,我在前台页面实现,问一下为什么用存储过程来实现不好。

flash的路径我改过了,但还是不行。

FlashVars是传参用的,flash它要调用xml文件,不是传参。

谁指导下,谢谢。
[/Quote]
存储过程占用的是 1.cpu资源 2.内存资源 3.数据库资源
前台实现占用的是 1.cpu资源 2.内存资源
「已注销」 2008-07-07
  • 打赏
  • 举报
回复
截取字符串解决,我在前台页面实现,问一下为什么用存储过程来实现不好。

flash的路径我改过了,但还是不行。

FlashVars是传参用的,flash它要调用xml文件,不是传参。

谁指导下,谢谢。
lovefootball 2008-07-07
  • 打赏
  • 举报
回复
第二个问题可以用CSS
http://blog.csdn.net/fhbcn/archive/2008/02/02/2078088.aspx
http://tech.ddvip.com/2007-08/118614412230768.html
syc958 2008-07-07
  • 打赏
  • 举报
回复
不建议在存储过程里截取,这样会影响速度!一般是写一个函数在类库里然后在aspx页面来调用比如可以在这里:"<%# getstringlength(DataBinder.Eval(Container.DataItem,"title"),5,"...." %>"
给你个函数看一下!
getstringlength(str,num,repalecestr)
{
if(str.length>num)
{str=substring(str,num)+repalecestr;}
else
{str=str}
return str;

}

第二个问题当然是在 FlashVars=这里来做文章了!
tt5201 2008-07-07
  • 打赏
  • 举报
回复

问题2



CREATE PROCEDURE Select_Top_humanist

AS

SELECT TOP 5
[ID],
(case when len(title)>10
then (left(title,10)+'...')
else title end) as title ,
HitCount

FROM news

WHERE

StyleID = 1 AND TypeID = 5

ORDER BY HitCount DESC
GO
IcyPlayer 2008-07-07
  • 打赏
  • 举报
回复
问题2:
CREATE PROCEDURE Select_Top_humanist

AS

SELECT TOP 5
[ID],
case len(Title)>30 when 1 then left(Title,30) else Title,
HitCount

FROM news

WHERE

StyleID = 1 AND TypeID = 5

ORDER BY HitCount DESC
GO

也可以用iif()函数实现
IIF (1>0, 1, 0)
等价于SQL:
case when 1>0 then 1 else 0 end
加载更多回复(4)

62,103

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧