紧急求助:DataGrid的DataKeys(e.Item.ItemIndex)

myhid 2010-01-16 05:00:46
我的DataGrid的DataKeyField设置的一个主键code对应的数据库字段为varchar,

现在当code的值为“001”等0开头的时候,用
DataKeys[e.Item.ItemIndex]取到的值居然把前面的0去掉了,取到是是1,

这个怎么解决??
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
myhid 2010-01-17
  • 打赏
  • 举报
回复
e.Item.Attributes.Add("onclick", "javascript:seltr(this," + Convert.ToString(dgdTaskList.DataKeys(e.Item.ItemIndex)) + ")")
-

忘记加引号了。这样就对了
e.Item.Attributes.Add("onclick", "javascript:seltr(this,'" + Convert.ToString(dgdTaskList.DataKeys(e.Item.ItemIndex)) + "')")
liuy052 2010-01-16
  • 打赏
  • 举报
回复
UP
TalesTen 2010-01-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mngzilin 的回复:]
HTML code<asp:DataGridID="DataGrid1" runat="server" RepeatDirection="Horizontal"><Columns><asp:TemplateColumn><ItemTemplate><%#Eval("id").ToString()%></ItemTemplate></asp:TemplateColumn></Columns></asp:DataGrid><asp:ButtonID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>C# codeprotectedvoid Page_Load(object sender, EventArgs e)
{if (!IsPostBack)
{
DataTable dt=new DataTable();//dt.Columns.Add("id", typeof(int)); dt.Columns.Add("id",typeof(string));//这里指定类型为string dt.Rows.Add("001");
dt.Rows.Add("002");
dt.Rows.Add("003");
dt.Rows.Add("004");


DataGrid1.DataSource= dt;
DataGrid1.DataKeyField="id";
DataGrid1.DataBind();
}
}protectedvoid Button1_Click(object sender, EventArgs e)
{
Response.Write(DataGrid1.DataKeys[1].ToString());//}
注意指定了类型为string
[/Quote]up
liaolian9948 2010-01-16
  • 打赏
  • 举报
回复
取出来的是字符串嘛。。.tosting() 去除左边的0就可以啦。。 lefttrim() 看下是不是这个方法 反正有清除左边的方法。。找下。。有点忘了。。
myhid 2010-01-16
  • 打赏
  • 举报
回复
Protected Sub dgdTaskList_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgdTaskList.ItemDataBound
If e.Item.ItemIndex >= 0 Then
e.Item.Attributes.Add("onclick", "javascript:seltr(this," + Convert.ToString(dgdTaskList.DataKeys(e.Item.ItemIndex)) + ")")
End If
End Sub


前台js函数seltr取到的就没有0
mngzilin 2010-01-16
  • 打赏
  • 举报
回复
你出现这个现象的原因:

数据源选择不正确,不能正确区分数据库的字段类型,导致强制转换。
mngzilin 2010-01-16
  • 打赏
  • 举报
回复
<asp:DataGrid  ID="DataGrid1" runat="server" RepeatDirection="Horizontal">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<%# Eval("id").ToString()%>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
//dt.Columns.Add("id", typeof(int));
dt.Columns.Add("id",typeof(string));//这里指定类型为string
dt.Rows.Add("001");
dt.Rows.Add("002");
dt.Rows.Add("003");
dt.Rows.Add("004");


DataGrid1.DataSource = dt;
DataGrid1.DataKeyField = "id";
DataGrid1.DataBind();
}
}

protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(DataGrid1.DataKeys[1].ToString());//
}

注意指定了类型为string
ouc_ajax 2010-01-16
  • 打赏
  • 举报
回复
this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString().

这样取到的会自动去掉前边的0???

贴代码出来吧

62,074

社区成员

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

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

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

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