所以,我有一个列是我的关键列和自动增量,所以它不能是varchar或任何有趣的。
请保留“Erhmahgerd urse werb contrerls”,因为我喜欢控制自己的HTML流程而不喜欢将其交给.NET。我从未有过这方面的好经验(而且我喜欢我的代码是合规的)。我不希望这是一场火焰战或任何事情 - 我只想用零填充。我觉得有必要说这个,因为它发生的次数太多了。
所以,无论如何。
DataTable tabledata = new DataTable();
using (OdbcConnection con = new OdbcConnection(conString)) {
using (OdbcCommand com = new OdbcCommand("SELECT * FROM equipment_table", con)) {
OdbcDataAdapter myAdapter = new OdbcDataAdapter();
myAdapter.SelectCommand = com;
try {
con.Open();
myAdapter.Fill(tabledata);
} catch (Exception ex) {
throw (ex);
} finally {
con.Close();
}
}
}
Response.Write("<table id=\"equipment_listtable\"><thead><tr><th>Equipment ID</th><th>Equipment Name</th><th>Equipment Description</th><th>Type</th><th>In Use?</th><th>iOS Version (if applicable)</th><th>Permission Level</th><th>Status</th><th>Asset Tag</th><th>Details</th><th>Change</th><th>Apply</th></tr></thead>");
foreach (DataRow row in tabledata.Rows) {
int counter = (int)row["Equipment_ID"];
Response.Write("<tr>");
foreach (var item in row.ItemArray) {
Response.Write("<td>" + item + "</td>");
}
Response.Write("This stuff is irrelevant to my problem, so it is being left out... It uses counter though, so no complaining about not using variables...");
}
Response.Write("</table>");
可以想象,我的键列的值在生成的表中如下所示:
1
10
11
12
13
14
15
16
17
18
19
20
2
21
等。我想用0填充来解决这个问题。做这个的最好方式是什么?在生成表格时,有没有办法定位SPECIFIC字段?我查看了DataRow.Item,但我总是发现MSDN文档有点难以理解。
或者,我可以SELECT *然后在*?
中的一个特定字段上使用mysql的lpad谢谢!
答案 0 :(得分:1)
SELECT *通常不是一个好主意。通过编写查询,它不可避免地导致比节省时间更多的问题 这将允许您在列上使用LPAD。
我打算建议使用类似的东西:
Response.Write(“”+ item.ToString.PadLeft(2,'0')+“”);
但是因为你只是循环每个项目并以相同的方式呈现它们,所以上面会填充每个单元格。
所以我认为您最好的选择是更改查询以指定每一列。然后你可以根据需要填充场地 或者如果您只关心它们没有被正确排序(即按照字母而不是整体排序),请使用ORDER BY。
或者,为从数据库读取的每个单元格创建一个变量,并单独渲染每个单元格。 如果您需要,这将为您提供更多自定义选项。
答案 1 :(得分:0)
您确实总是明确指定列名,而不是使用* - 请参阅here。
如果你坚持使用*,那么只需将填充值作为另一个字段:
SELECT *,LPAD("Equipment_ID", 2, '0') as Equipment_ID_Padded FROM equipment_table
如果您的Equipment_ID超过2位,请记住LPAD
会截断。
更好的解决方案可能是使用String.Format
或ToString("D2");
string paddedString = string.Format("{0:d2}", (int)row["Equipment_ID"]));
答案 2 :(得分:0)
您可以使用.ToString(“D”+前导零数)在C#中添加填充; 例如。如果counter = 34并且你调用counter.ToString(“D5”),你将获得00034。
如果您正在使用字符串,最简单的方法是convert.toInt32()然后应用上述内容。
如果你不想继续使用字符串,只需查看--printf whups错误的语言 - String.Format。