在本文中,我们将为您详细介绍关于TOleContainer在新窗体显示,并禁止工具条的方法,的相关知识,此外,我们还会提供一些关于.net–ApiController与ODataController在
在本文中,我们将为您详细介绍关于TOleContainer在新窗体显示,并禁止工具条的方法,的相关知识,此外,我们还会提供一些关于.net – ApiController与ODataController在露出DTO时、AjaxControlToolKit--TabContainer控件的介绍、android.graphics.drawable.DrawableContainer.DrawableContainerState的实例源码、antd-Select组件下拉选项的样式修改不了(getContainer/getPopupContainer)(模态框类似)的有用信息。
本文目录一览:- 关于TOleContainer在新窗体显示,并禁止工具条的方法,
- .net – ApiController与ODataController在露出DTO时
- AjaxControlToolKit--TabContainer控件的介绍
- android.graphics.drawable.DrawableContainer.DrawableContainerState的实例源码
- antd-Select组件下拉选项的样式修改不了(getContainer/getPopupContainer)(模态框类似)
关于TOleContainer在新窗体显示,并禁止工具条的方法,
总结
以上是小编为你收集整理的关于TOleContainer在新窗体显示,并禁止工具条的方法,全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
.net – ApiController与ODataController在露出DTO时
这个问题是由ApiController返回的结果可以用OData查询过滤的。
如果我将QueraybleAttribute应用于contoller的方法,即使操作返回IEnumerable,查询也被处理。
但是没有这个属性,但是调用config.EnableQuerySupport(),只有当方法返回IQueryable时才会处理查询。
我认为这是不一致的行为。 WebAPI documentation and examples意味着控制器必须从ODataController中输出。我有点困惑。
ApiController意外和部分支持部分(至少$ skip,$ filter和$ top)的OData协议。或者这是设计,我需要ODataController来完成ODataSupport。
真正的问题是我的服务暴露了DTO,而不是POCO。可能没有一对一的映射。需要将OData查询重新转换为与POCO的EF查询相对应的DTO。
现在只是和OData玩。我检索实体并将其转换为DTO。诚然,从DB中获取所有这些都不是很好,因为每个请求都是容忍实验的。但是如果需要DTO的一些过滤子集,那么绝对不需要将所有实体返回给客户端。
OData查询开始使用ApiController和Querayble属性开箱即用,但上述不一致会使我做错事情。
解决方法
Can someone explain me when I should inherit my controller form
ODataController vs ApiController?
如果要公开一个遵守OData protocol的端点,则需要从ODataController继承。如果要执行其他操作,例如REST端点,则继承自ApiController。
应用WebAPI OData框架的一些部分,但不是其他部分可能不是一个好主意。在某些情况下,可能在其他情况下可能无法正常工作。例如,您可能会获得查询支持,但可能不会生成$ Metadata端点(这只是推测,实际的症状可能不同)。
听起来你已经使用了EntityFramework。我知道有许多示例显示如何将其作为OData端点。
如果由于某种原因不想这样做,您可以实现自己的查询。这在this tutorial的几个地方简要介绍,但是要点是添加一个类型为ODataQueryOptions< T>对您的操作,并使用其上的方法过滤您的结果集。但是,为所有可能的OData查询生成好的数据库查询可能会很痛苦,所以如果可能的话应该避免这种情况。
AjaxControlToolKit--TabContainer控件的介绍
1. Introduction:
Tab本身就应该是个以页签形式显示组织网页内容的一个控件。在AJAX Control Tool Kit的控件中有TabContainer控件,它是一些TabPanel控件的载体,而每个TabPanel可以像标准的Panel控件一样,成为其它一些ASP.NET控件的容器。TabPanel通过它的三部分结构HeaderText,HeaderTemplate和ContentTemplate属性来指定它的内容。
TabContainer控件具有保持当前页面状态的能力。当页面发生刷新后,最新被选中的Tab将被保持其选中的状态;此外每个Tab的可操作属性页可以保持。
2. Properties:
<ajaxToolkit:TabContainer runat="server"
OnClientActiveTabChanged="ClientFunction"
Height="150px">
<ajaxToolkit:TabPanel runat="server"
HeaderText="Signature and Bio"
<ContentTemplate>
...
</ContentTemplate>
/>
</ajaxToolkit:TabContainer>
上面就是TabContainer的结构,它分为两大部分,TabContainer的属性部分和TabPanel属性部分。
TabContainer属性:
a. ActiveTabChanged(Event): 当选中的Tab被改变的时候触发的事件(服务器端事件)。
b. OnClientActiveTabChanged: 当选中的Tab改变时触发的客户端脚本事件。
c. CssClass - 被用于定义其客户表现的 Css Class 样式,它具有默认的 Tab 主题样式,但是也可以根据实际需要进行修改
d. ActiveTabIndex - 初始化被设置为选中的 Tab
e. Height - 其中 Tab 的高度(不包括其标题栏)
f. Width - 其中 Tab 的宽度
g. ScrollBars - 是否显示滚动条,可以设置为、None、Horizontal、Vertical、Both 或者 Auto
TabPanel属性:
a. Enabled - 是否显示该 Tab 页,该属性可以在客户端脚本中改变
b. OnClientClick - 当被点击时触发的客户端脚本事件名称
c. HeaderText - Tab 标题
d. HeaderTemplate - 一个 TemplateInstance.Single ITemplate 用来其定义标题
e. ContentTemplate - 一个 TemplateInstance.Single ITemplate 用来其定义内容
特别需要注意的是CssClass可以设定为你自定义格式的CSS,假如你的CssClass为Customer,需要自定义的Css属性有以下这些:
Tabs Css classes
· .ajax__tab_header: A container element that wraps all of the tabs at the top of the TabContainer. Child CSS classes:.ajax__tab_outer.
· .ajax__tab_outer: An outer element of a tab,often used to set the left-side background image of the tab.Child CSS classes: .ajax__tab_inner.
· .ajax__tab_inner: An inner element of a tab,often used to set the right-side image of the tab. Child CSS classes:.ajax__tab_tab.
· .ajax__tab_tab: An element of the tab that contains the text content. Child CSS classes:none.
· .ajax__tab_body: A container element that wraps the area where a TabPanel is displayed. Child CSS classes: none.
· .ajax__tab_hover . This is applied to a tab when the mouse is hovering over. Child CSS classes:.ajax__tab_outer.
· .ajax__tab_active: This is applied to a tab when it is the currently selected tab. Child CSS classes:.ajax__tab_outer.
那么自定义的header的Css就叫做; Customer.ajax_tab_header{…}/
在下面的例子中将会介绍几个自定义的Css样式。
3. Example:
和以前每个控件一样,我们需要先建立一个ajaxtoolkit模版:
第一步: 创建一个ajaxtoolkit模板:
起个项目名字叫做AjaxControlToolKit_Tab。
第二步: 编辑default.aspx页面,
首先需要在form的scriptmanager下方拖入一个TabContainer控件,然后设置它的属性:
可以看出来每个tabcontainer中需要有tabpanel Panel的属性中设置headertext,也就是这个tab的名字,然后每个panel中需要ContentTemplate来显示内容,随便填写点显示的内容。
然后再添加几个tabpanel,下面的每个tabpanel的内容这里可以拷贝上面的内容。
因为我这里设置了CssClass属性,所以控件会重载这个Css而不是用默认的那个Css样式。
第三步:我们需要创建一个Css文件来存放自定义的tab样式。
右键project,点击’Add New Item’,创建一个叫做stylee.css文件,然后在default.aspx文件的<Head>节点部分加上
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
这里附上用到的Css样式:
/* ajax__tab_ie-theme theme */
.ajax__tab_ie-theme .ajax__tab_header
{
padding-left:5px;
}
.ajax__tab_ie-theme .ajax__tab_header .ajax__tab_tab
{
margin-right:0px;
background:url(img/ie/tab_unselected.gif);
width:116px;
padding:9px 0px 3px 0px;
text-align:center;
color:#006699;
font-family:verdana;
font-size:13px;
display:block;
}
.ajax__tab_ie-theme .ajax__tab_active .ajax__tab_tab
{
padding:6px 0px 3px 0px;
background:url(img/ie/tab_selected.gif);
}
.ajax__tab_ie-theme .ajax__tab_body
{
background:url(img/ie/ie_tabbacker_720x296.jpg) no-repeat;
font-size:13px;
font-family:verdana;
height:296px;
width:716px;
}
.ajax__tab_ie-theme .ajax__tab_body div
{
padding:8px;
}
第四步:向工程天添加用到的图片:创建一个img文件夹,然后加入图片,用到的图片在后面提供的代码链接里可以下载.
4. 代码下载:
http://dujingjing1230.download.csdn.net/
From: http://www.jb51.cc/article/p-unbaszrk-nb.html
android.graphics.drawable.DrawableContainer.DrawableContainerState的实例源码
private static boolean setContainerConstantStateV9(DrawableContainer drawable,ConstantState constantState) { if (!sSetConstantStateMethodFetched) { try { sSetConstantStateMethod = DrawableContainer.class.getDeclaredMethod("setConstantState",new Class[]{DrawableContainerState.class}); sSetConstantStateMethod.setAccessible(true); } catch (NoSuchMethodException e) { Log.e(LOG_TAG,"Could not fetch setConstantState(). Oh well."); } sSetConstantStateMethodFetched = true; } if (sSetConstantStateMethod != null) { try { sSetConstantStateMethod.invoke(drawable,new Object[]{constantState}); return true; } catch (Exception e2) { Log.e(LOG_TAG,"Could not invoke setConstantState(). Oh well."); } } return false; }
/** * Returns a {@link Map} that holds a mapping from the existing state-lists * in the background {@link Drawable}. * * @param background A {@link Drawable} background ( * {@link StateListDrawable}). * @return A {@link Map}. An empty map in case the background * <code>null</code>,or is not a {@link StateListDrawable}. */ public static Map<int[],Drawable> getExistingStates(Drawable background) { LinkedHashMap<int[],Drawable> map = new LinkedHashMap<int[],Drawable>(); if (background instanceof StateListDrawable) { // Grab the existing states. Note that the API hides some of the // public functionality with the @hide tag,so we have to access // those through reflection... StateListDrawable stateList = (StateListDrawable) background; DrawableContainerState containerState = (DrawableContainerState) stateList .getConstantState(); Drawable[] children = containerState.getChildren(); try { // This method is public but hidden ("pending API council") Method method = stateList.getClass().getmethod("getStateSet",int.class); for (int i = 0; i < containerState.getChildCount(); i++) { Object state = method.invoke(stateList,i); if (state instanceof int[]) { map.put((int[]) state,children[i]); } } } catch (Exception e) { PXLog.e(TAG,e,"Error getting the state set"); } } return map; }
/** * Check if two Drawables are equal. A regular check for a Drawable equals * just checks for the instance reference,while this check is doing a * deeper equals when dealing with {@link DrawableContainer} instances. In * these cases,the method will run equals on each of the child drawables in * the container (order is importance as well). * * @param d1 * @param d2 * @return <code>true</code> if the drawables are equal,<code>false</code> * otherwise. */ public static boolean isEquals(Drawable d1,Drawable d2) { if (d1 == d2) { return true; } if (d1 == null || d2 == null) { return false; } if (d1 instanceof DrawableContainer && d2 instanceof DrawableContainer) { // Try to match the content of those containers DrawableContainerState containerState1 = (DrawableContainerState) ((DrawableContainer) d1) .getConstantState(); DrawableContainerState containerState2 = (DrawableContainerState) ((DrawableContainer) d2) .getConstantState(); return Arrays.equals(containerState1.getChildren(),containerState2.getChildren()); } return d1.equals(d2); }
private void setColors(View view,int[] colors) { Drawable drawable = view.getBackground(); if (drawable instanceof StateListDrawable) { StateListDrawable stateListDrawable = (StateListDrawable) drawable; DrawableContainerState drawableContainerState = (DrawableContainerState) stateListDrawable.getConstantState(); if (drawableContainerState != null) { Drawable[] drawables = drawableContainerState.getChildren(); for (int i = 0; i < colors.length; i++) if (drawables[i] instanceof GradientDrawable) ((GradientDrawable) drawables[i]).setColor(colors[i]); } } else Log.w(TAG,"Drawable of view must be StateListDrawable in WoWoStateListColorAnimation"); }
public static boolean m2634b(Drawable drawable) { if (drawable instanceof LayerDrawable) { return VERSION.SDK_INT >= 16; } else if (drawable instanceof InsetDrawable) { return VERSION.SDK_INT >= 14; } else { if (drawable instanceof StateListDrawable) { return VERSION.SDK_INT >= 8; } else { if (drawable instanceof GradientDrawable) { return VERSION.SDK_INT >= 14; } else { if (!(drawable instanceof DrawableContainer)) { return drawable instanceof C0063q ? m2634b(((C0063q) drawable).m469a()) : drawable instanceof C0244a ? m2634b(((C0244a) drawable).m1984a()) : drawable instanceof ScaleDrawable ? m2634b(((ScaleDrawable) drawable).getDrawable()) : true; } else { ConstantState constantState = drawable.getConstantState(); if (!(constantState instanceof DrawableContainerState)) { return true; } for (Drawable b : ((DrawableContainerState) constantState).getChildren()) { if (!m2634b(b)) { return false; } } return true; } } } } }
private static boolean shouldMutateBackground(Drawable paramDrawable) { if (Build.VERSION.SDK_INT >= 16) {} for (;;) { return true; if ((paramDrawable instanceof LayerDrawable)) { if (Build.VERSION.SDK_INT < 16) { return false; } } else if ((paramDrawable instanceof InsetDrawable)) { if (Build.VERSION.SDK_INT < 14) { return false; } } else if ((paramDrawable instanceof DrawableContainer)) { Drawable.ConstantState localConstantState = paramDrawable.getConstantState(); if ((localConstantState instanceof DrawableContainer.DrawableContainerState)) { Drawable[] arrayOfdrawable = ((DrawableContainer.DrawableContainerState)localConstantState).getChildren(); int i = arrayOfdrawable.length; for (int j = 0; j < i; j++) { if (!shouldMutateBackground(arrayOfdrawable[j])) { return false; } } } } } }
private Bitmap getBitmapFromStateListDrawable(){ DrawableContainerState state = (DrawableContainerState) getDrawable().getConstantState(); for(Drawable drawable : state.getChildren() ){ if( drawable instanceof BitmapDrawable ){ return ((BitmapDrawable) drawable).getBitmap(); } } return null; }
static boolean canSafelyMutateDrawable(@NonNull Drawable drawable) { if (drawable instanceof LayerDrawable) { if (VERSION.SDK_INT >= 16) { return true; } return false; } else if (drawable instanceof InsetDrawable) { if (VERSION.SDK_INT < 14) { return false; } return true; } else if (drawable instanceof StateListDrawable) { if (VERSION.SDK_INT < 8) { return false; } return true; } else if (drawable instanceof GradientDrawable) { if (VERSION.SDK_INT < 14) { return false; } return true; } else if (drawable instanceof DrawableContainer) { ConstantState state = drawable.getConstantState(); if (!(state instanceof DrawableContainerState)) { return true; } for (Drawable child : ((DrawableContainerState) state).getChildren()) { if (!canSafelyMutateDrawable(child)) { return false; } } return true; } else if (drawable instanceof DrawableWrapper) { return canSafelyMutateDrawable(((DrawableWrapper) drawable).getWrappedDrawable()); } else { if (drawable instanceof android.support.v7.graphics.drawable.DrawableWrapper) { return canSafelyMutateDrawable(((android.support.v7.graphics.drawable.DrawableWrapper) drawable).getWrappedDrawable()); } return true; } }
antd-Select组件下拉选项的样式修改不了(getContainer/getPopupContainer)(模态框类似)
modal框的dom与<div id=''root''>同级别,因此不能以user-manage为父元素定义样式,以.modal定义样式会污染其他模块的模态框,(下拉框选项的级别也与root同级),即:
// F12观察组件展开dom结构
<div id=''app''>
<div id=''root''>
<section id=''user-manage''>
页面内容:搜索行列表等
</section>
</div>
<div id=''modal''>
<Modal>
模态框内容
label=''角色分配'' <Select>下拉框</Select>
</Modal>
</div>
<divselect-dropdown~~~~''>
下拉框选项内容
</div>
</div>
解决方案:使用getContainer和getPopupContainer将模态框,挂在到指定id,select-dropdown挂载到其父元素下面
// 好
<Modal getContainer={() => document.getElementById(''user-manage'')}>
// 更好更简洁,实测有效
<Modal getContainer={false}>
// 不好
<Select getPopupContainer={() =>document.getElementById(''user-manage'')}>
// 好:永远在角色分配下面,相对固定
<Select mode=''multiple'' getPopupContainer={e => e.parentNode}>
// F12观察组件展开dom结构
<div id=''app''>
<div id=''root''>
<seletion>
页面内容:搜索行列表等~~~~
<div id=''modal''>
<Modal>
模态框内容
label=''角色分配'' <Select>下拉框</Select>
<divselect-dropdown''>
下拉框选项内容
</div>
</Modal>
</seletion>
</div>
</div>
小知识点:select-dropdown样式排版
// dom结构:
<xxxant-select-dropdown-menu-item-group''>
<div>喷涂检测组</div>
<ul>
<li>业务组管理</li>
<li>数据组管理员</li>
<li>模型管理员</li>
<li>普通人员</li>
</ul>
</xxx>
<xxxant-select-dropdown-menu-item-group''>
<div>挂网填浆检测组</div>
<ul>
<li>业务组管理</li>
<li>数据组管理员</li>
<li>模型管理员</li>
<li>普通人员</li>
</ul>
</xxx>
1.4个li如何一行2个:
#user-manage #modal .select-dropdown ul li{
display: inline;
float: left;
}
2.排除最后一个元素,不给下border样式
#user-manage #modal .select-dropdown .ant-select-dropdown-menu-item-group:not(:last-of-type){
border-bottom: 0.5px #CFD8DF solid;
}
今天的关于关于TOleContainer在新窗体显示,并禁止工具条的方法,的分享已经结束,谢谢您的关注,如果想了解更多关于.net – ApiController与ODataController在露出DTO时、AjaxControlToolKit--TabContainer控件的介绍、android.graphics.drawable.DrawableContainer.DrawableContainerState的实例源码、antd-Select组件下拉选项的样式修改不了(getContainer/getPopupContainer)(模态框类似)的相关知识,请在本站进行查询。
本文标签: