C#中继承base(id)是个什么意思

C#中继承base(id)是个什么意思,第1张

base(id)就是调用父类的带有id参数的构造函数。

C#里面的this和base 跟JAVA里面的this和super是一样的。你在定义一个变量的时候有一个this引用,指向自身,还有一个引用base,指向父类。关于你说的那种情况就是我说的第一种,如果子类成员有和父类成员同名的时候,就必须用this和base区分。

dimred

好处:

业务逻辑可以和打点逻辑分离

打点更灵活

防止漏打的情况

发包以后可以新增打点:

实现原理:

(TalkingData灵动分析技术揭秘(下))

>

首先得建一个表,当然,如果你的表中就已经建好目录的话,那这一步可以省略了。但有一点要提醒:这个表是我这个例子的使用依据(不知道这样说对不对)。

由于我用的表是ACCESS的,所以建表就不说了,只列出这个两个表的相应的字段名(数据库名:dbmdb):

表名:type_tree ――父类

字段:type_id(自动编号) type_name(类别名称)

表名:s_type ――子类

字段:id(自动编号) s_name(子类别名称) type_id(父类ID)――与父类表相对应

现在是建立数据库连接:

Dim conn, connStrSet conn = serverCreateObject("ADODBConnection")connStr = "Provider = Microsoftjetoledb40;"connStr = connStr & "Data Source = " & servermappath("dbmdb")ConnOpen connStr

以上代码应当不用再解释了吧,都是大家常用的代码。。

现在进入实质性的 *** 作:)

二级关联菜单一般情况下都是以下拉菜单来做,这里我也不例外,一样用下拉菜单来做。

只不过这里有一个地方不一样哦。

就是一个用的是跳转菜单,这一点很重要,成功与否全看这个菜单有没有用对!

以下是这个跳转菜单的代码!

<select name="first" onChange="MM_jumpMenu('parent',this,0)">

<%

sql = "select [type_id],[type_name] from [type_tree]"

set rs = connexecute(sql)'取得父类的ID及名称

if rseof or rsbof then

responsewrite "<option>-----</option>" '如果没有记录,就显示-----

else

while not(rseof or rsbof) '有记录,就将父名称列出来,形成下拉。

responsewrite ("<option value='sec=" & rs(0) & "'")

if cstr(rs(0)) = requestquerystring("sec") then

responsewrite "selected"

end if

responsewrite (">" & rs(1) & "</option>")

rsmovenext

wend

rsmovefirst '将游标移到第一条,以备下面之用。

end if

%>

</select>

哦,对了,还有一段代码忘了贴出来了,这个是跳转菜单的关键啊,看我粗心的!

补上补上:

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_jumpMenu(targ,selObj,restore){ //v30

eval(targ+"location='"+selObjoptions[selObjselectedIndex]value+"'");

if (restore) selObjselectedIndex=0;

}

//-->

</script>

以上代码贴到<head>里,是DW生成,我看不太懂什么意思,所以不注解了:D

现在是菜单的二级部分,这里不是用跳转菜单,只是一个列表罢了,所以代码跟上面的跳转菜单也就差一个onchange这个函数。

以下是这个菜单的代码,由于循环跟判断相对上面来说复杂一些,大伙要看清楚一点哦。

<select name="second">

<%if rseof or rsbof then

responsewrite ("<option>--------</option>")

else

if requestquerystring("sec") = "" then '获取跳转之后的sec值

temp=rs(0) 如果为空,就把temp的值设为第一条记录的值

else

temp = requestquerystring("sec") '否则就为收到的值

end if

subsql = "select [s_name] from [s_type] where type_id='"&temp&"'"

set subrs = connexecute(subsql) '列出一切资料为temp的记录

if subrseof or subrsbof then

responsewrite ("<option>-----</option>")

'如果没有记录,则在这个列表中显示"-----"

else

while not(subrseof or subrsbof)'否则就用循环列出一切符合条件的记录。

responsewrite ("<option value=" & subrs(0) & ">" & subrs(0) & "</option>")

subrsmovenext

wend

end if

end if

'关闭所有的记录集

subrsclose

set subrs = nothing

rsclose

set rs = nothing

connclose

set conn = nothing

%>

</select>

到现在为止,已经将这个二级菜单的制过程做完了。

现在你的里面只分了两个类。其实这个表可以做无限级分类。输出用递归实现。正好我这几天研究了这个。代码写给你。

$result = mysql_query("select  from tmodule_conf order by ModuleId");

//首先我们把各个分类的值保存在一个二维数组中,在下面的递归函数里有用。   

while($row = mysql_fetch_object($result)){

 $arr[] = array($row->ModuleId,$row->SubModuleId,$row->ModuleName);//每行保存一个分类的ModuleId,SubModuleId,ModuleName

 }

 ###########普通显示分类####################

function fenlei($SubModuleId=-1,$str){  //$f_id初始化为0,也就是从最大分类开始循环   

 global $arr;   //声明$arr为全局变量才可在函数里引用。   

 for($i=0;$i<count($arr);$i++){   //对每个分类进行循环。   

  if($arr[$i][1]==$SubModuleId){   //$arr[$i][1]表示第$i+1个分类的SubModuleId的值。开始$SubModuleId=-1,也就是把SubModuleId=-1的分类输出来。   

    echo $str"--"$arr[$i][2]"<br>"; //$arr[$i][2]表示第$i+1个分类的name的值。   

   fenlei($arr[$i][0],$str"&nbsp;&nbsp;");  //$arr[$i][1]表示第$i+1个分类的id的值。进行递归,也就是把自己的ModuleId作为SubModuleId参数把自己的子类再循环出来。   

  }  

 }   

}

//调用例子

fenlei(-1," &nbsp;&nbsp;");

这问题很有趣哦!很多公司面试经常提到!有三种办法:

1父类子类都各自建表(不推荐)

2子类父类同在一张表(推介)

3还有一种做法记不清了。

下面说说第二种做法吧!

你可以在数据库中建一张表都拥有以上的字段,然后在hibernate配置文件里配置一对多的关系,自己类对自己类做一对多的关联,具体配置你可以在一些论坛网站上搜到的。然后查询时你只要按id=父类的那个id去查一遍就全出来了

以上就是关于C#中继承base(id)是个什么意思全部的内容,包括:C#中继承base(id)是个什么意思、自动化打点初探、dw中怎么制作二级子页面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9351066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存