2
public partial class logRead : Form
{
    DataSet ds = new DataSet();
    DataTable tab = new DataTable();

    public logRead()
    {
        InitializeComponent();
    }
    string line;
    private void BtnUser_Click(object sender, EventArgs e)
    {           
        DataRow[] filteredRows = tab.Select("Username = '"+cmbUsername.Text+"'");
        DataTable dt = filteredRows.CopyToDataTable();
        dgv1.DataSource = dt;
        txtcount.Text = dgv1.Rows.Count.ToString();         
    }

    private void btnsearch_Click(object sender, EventArgs e)
    {
        dtmDate.CustomFormat = "dd MMM yyyy hh mm ss";
        DataRow[] filteredRows = tab.Select("Datetime = '" +dtmDate.Text + "'");
         DataTable dt = filteredRows.CopyToDataTable();
        dgv1.DataSource = dt;                   
    }

    private void logRead_Load(object sender, EventArgs e)
    {
        StreamReader strRead = new StreamReader("D:\\login.hml");
        string line;
        line = strRead.ReadToEnd();
        DataRow row = null;
        tab.Columns.Add("Ipaddress");
        tab.Columns.Add("Sysname");
        tab.Columns.Add("Username");
        tab.Columns.Add("Text");
        tab.Columns.Add("Datetime");
        string[] rows = line.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
        foreach (string r in rows)
        {
            string[] columns = r.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
            if (columns.Length <= tab.Columns.Count)
            {
                row = tab.NewRow();

                for (int i = 0; i < columns.Length; i++)

                    row[i] = columns[i];
                tab.Rows.Add(row);
            }
        }
        ds.Tables.Add(tab);
        dgv1.DataSource = ds.Tables[0];
        txtcount.Text = dgv1.Rows.Count.ToString();
    }
}}

私は alogfile を持っており、フォームをロードするときにデータグリッドビューを埋めるコードを書き、一時的にデータテーブルとデータセットを使用してデータグリッドビューに入力し、コンボボックスを使用してすべてのユーザー名を一時的に入力し、コンボボックスの任意の名前をクリックすると、その名前はすべて情報は datagridview に入力します そのコードを btn userclik に書きます 今月ごとまたは日付ごとにログテーブルが必要ですdatagridviewの賢明なデータ、私はコード検索クリックが得られないことを書いています(disはWindowsフォームにあります)もう1つ、データベースも使用していません。コードを確認してください。

4

2 に答える 2

1
var formatPattern = "dd MMM yyyy hh mm ss";
DateTime parsedDate;
var culture = System.Globalization.CultureInfo.InvariantCulture; // use CurentCulture if you want to use the current culture instead which might change
bool success = DateTime.TryParseExact(dtmDate.Text, formatPattern, culture, DateTimeStyles.None, out parsedDate);
if (success)
于 2013-03-26T12:11:48.457 に答える
1

for を使用する代わりに 、Linq-To-DataSet クエリで をDataTable.Select使用します。DateTimeを使用DateTime.TryParseExactして、文字列を に解析できますDateTime

var formatPattern = "dd MMM yyyy hh mm ss";
DateTime parsedDate;
var culture = System.Globalization.CultureInfo.InvariantCulture; // use CurentCulture if you want to use the current culture instead which might change
bool success = DateTime.TryParseExact(dtmDate.Text, formatPattern, culture, DateTimeStyles.None, out parsedDate);
if (success)
{ 
    // assuming you want all rows of the same day not the same second:
    var filteredRows = tab.AsEnumerable()
        .Where(r => r.Field<DateTime>("Datetime").Date == parsedDate.Date);
    dgv1.DataSource = filteredRows.CopyToDataTable();
}
于 2013-01-31T12:01:24.873 に答える