我有一个从ObjectDataSource填充的GridView,其DataKeyNames字段中有两个项目.一个是主键,ID,另一个是类别字段(类别字段用于添加标题行以描述类别).
显示工作正常,但我正在尝试创建删除操作.对象的delete方法只需要ID字段和ObjectDataSource,即使我将方法定义为只需要一个ID字段,.net也会抱怨,因为它正在寻找一个同时具有DataKeyNames中定义的字段的方法.
如果我将类别的参数添加到delete方法,它可以工作,但是定义一个不用于任何东西的参数很烦人.
我可以将ObjectDataSource和GridView对象配置为具有DataKeyNames的两个值,但具体应该传递给哪些方法?
这两个对象的(简化)定义是:
<asp:ObjectDataSource ID="ObjDS1" runat="server" SelectMethod="getAllItems"
TypeName="Items" DeleteMethod="deleteItem">
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32" />
<!-- This shouldn't be necessary: -->
<asp:Parameter Name="Category" Type="String" />
</DeleteParameters>
</asp:ObjectDataSource>
<asp:GridView ID="gvJItems" runat="server" AutoGenerateColumns="False" DataKeyNames="ID,Category"
DataSourceID="ObjDS1">
<Columns>
<asp:BoundField DataField="ID" Visible="false" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="85%"/>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lbDelete" Runat="server"
OnClientClick="return confirm('Are you sure you want to delete this?');"
CommandName="Delete">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud) 新问题:
使用Microsoft .NET框架编写的程序是否编译/执行本机代码?
我不是说如果有办法不在机器上安装.net框架.简单地说:.net应用程序是否运行在另一层,如Java(即字节码).
可能重复:
编译K&R示例时出现问题
最近,我一直在通过K&R的C编程语言.
在5.11节中,它们包含指向函数的指针,并在输入它们的示例后 - 一个quicksort实现,我们提供了一个指向我们想要使用的比较函数的指针 - 我从编译器收到警告:条件表达式中的指针类型不匹配.(我的编译器是OS X 10.5.6上的gcc 4.0.1)
触发警告的示例中的行是:
qsort((void **) lineptr, 0, nlines-1,
(int (*)(void*, void*))(numeric ? numcmp : strcmp));
Run Code Online (Sandbox Code Playgroud)
该程序在没有segfaulting的情况下执行,但我喜欢尽可能地发出警告,或者至少了解它们的原因.
numcmp的函数声明如下:
int numcmp(char *, char *);
Run Code Online (Sandbox Code Playgroud)
但根据联机帮助页,stcmp有这个签名:
int strcmp(const char *s1, const char *s2);
Run Code Online (Sandbox Code Playgroud)
由于方法签名略有不同,警告是否简单?忽视警告会有什么后果?
使用SQLServer,似乎普遍接受的是,在插入的末尾添加SELECT SCOPE_IDENTITY()是返回新插入记录的PK的最佳方法,假设您正在为pk使用自动增量字段.
但是,我似乎无法找到Oracle的等价物.
最佳实践似乎是使用序列来生成PK,但是如何实现甚至可以有不同的选项.您是否将其留给开发人员插入sequence.nexval,或使用触发器?
在任何一种情况下,获取新ID似乎是一个常见问题.
我遇到的建议和解决方案包括:
对于这种情况,"最佳实践"解决方案应该是什么?
我有许多子表具有父表的外键.
如何在父表中添加一个条目并获取该条目的主键,以便我可以在子表中输入指向父表中条目的行?
我在C#应用程序的MS Access数据库中执行此操作.
今天早上我遇到了我正在处理的iPhone应用程序崩溃,当我修复了这个bug时,我很好奇语法原因这是一个问题.
这是我的代码简化为简单元素.我使用NSArray为项目填充TableView中的项目.NSArray是一个属性:
@interface FooViewController : UITableViewController {
NSArray *stuff;
}
@property (nonatomic, retain) NSArray *stuff;
Run Code Online (Sandbox Code Playgroud)
在我的实现文件中:
@synthesize stuff;
- (void)viewDidLoad {
NSArray *arr = [[NSArray alloc] initWithObjects:@"", @"Item 1", @"Item 2",
@"Lorem", @"Ipsum", nil];
self.stuff = arr;
[arr release];
}
Run Code Online (Sandbox Code Playgroud)
现在,当我第一次写这个方法的时候,我不小心把它留下了"自我".这导致了炸弹.虽然在测试时,它一见钟情.我试过了:
stuff = arr;
NSLog(@"%d", [stuff count]);
Run Code Online (Sandbox Code Playgroud)
但在其他方法中使用的东西遭到轰炸.现在我已经解决了问题,我可以在其他地方使用[stuff count].
那么为什么我可以在某些地方使用东西,但在其他地方我必须使用self.stuff?
假设您有几个webpart,一个作为控制器,另外几个从控制器获取信息并对其进行操作.使用ASP 2.0中引入的Consumer/Producer接口进行建模非常容易.
你怎么能在保持上述情况的同时增加互动?
一个简单的例子是:用户将信息输入到执行搜索的webpart A中,结果将显示在webpart B上.Webpart C允许您过滤应该触发webpart A重新提交查询的结果,从而更新结果是B.
在WSS 3.0中似乎不可能这样做,因为在任何时候只允许在所有连接中使用1个接口.
这甚至有意义吗?:-)
我想确认数组是否已创建,如何才能完成?没有nul关键字?
Dim items As Array = str.Split("|")
if (items=null) then ???
Run Code Online (Sandbox Code Playgroud) .net ×3
asp.net ×1
c ×1
c# ×1
database ×1
date ×1
gridview ×1
ms-access ×1
native ×1
objective-c ×1
oracle ×1
primary-key ×1
sharepoint ×1
sql ×1
sql-server ×1
t-sql ×1
vb.net ×1
web-parts ×1